【问题标题】:pass hdfs path as environment variable in spark submit在火花提交中将hdfs路径作为环境变量传递
【发布时间】:2015-06-21 08:43:56
【问题描述】:

我正在尝试在纱线集群上使用 spark submit 运行我的 spark 程序,我正在读取一个放在 hdfs 中的外部配置文件,我正在运行作业-

./spark-submit --class com.sample.samplepack.AnalyticsBatch --master yarn-cluster --num-executors 3 --driver-memory 512m --executor-memory 512m --executor-cores 1 --driver-java-options "-Dext.properties.dir=hdfs://namenode:8020/tmp/some.conf" PocSpark-1.0-SNAPSHOT-job.jar 10

但它无法从 hdfs 读取文件,我也尝试在本地模式下以 conf 文件作为 hdfs 路径运行作业,我得到了-

java.io.FileNotFoundException: hdfs:/namenode:8020/tmp/some.conf (No such file or directory)

这里缺少后 hdfs 协议正斜杠。任何帮助都将在这里得到赞赏。

【问题讨论】:

  • 您可以使用 hadoop 实用程序查看此文件吗? hadoop fs -ls /tmp/
  • 是的文件可用,但我认为 spark-submit 无法读取 hdfs 文件路径。
  • 你有环境变量HADOOP_CONF_DIR。在控制台输入echo $HADOOP_CONF_DIR查看?
  • 您好,感谢您的回复,但是已经设置了 HADOOP_CONF_DIR。问题是 spark submit 正在将 hdfs://namenode:8020/tmp/some.conf 中的“//”过滤到 hdfs:/namenode:8020/tmp/some.conf 并且无法到达 hdfs 路径。跨度>

标签: hadoop apache-spark hdfs hadoop-yarn


【解决方案1】:

您必须设置HADOOP_CONF_DIR 环境变量。它必须指向带有core-site.xml 的目录(可能类似于../hadoop-2.6.0/etc/hadoop_dir)并且core-site.xml 必须包含:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://yourHost:54310</value>
    </property>
</configuration>

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    像下面这样设置 spark-submit 参数可能会解决问题

    hdfs:///namenode:8020//tmp//some.conf

    【讨论】:

      猜你喜欢
      • 2018-12-02
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 2016-11-15
      • 2020-04-11
      • 2017-07-15
      • 2019-12-04
      • 2019-07-15
      相关资源
      最近更新 更多