dja*_*bs7 2 hadoop apache-spark pyspark
我正在尝试让 Spark 默认写入 HDFS。目前,当我在 RDD 上调用 saveAsTextFile 时,它会写入我的本地文件系统。具体来说,如果我这样做:
rdd = sc.parallelize( [1,2,3,4,5] )
rdd.saveAsTextFile("/tmp/sample")
Run Code Online (Sandbox Code Playgroud)
它将写入我的本地文件系统上名为 /tmp/sample 的文件。但是,如果我这样做
rdd = sc.parallelize( [1,2,3,4,5] )
rdd.saveAsTextFile("hdfs://localhost:9000/tmp/sample")
Run Code Online (Sandbox Code Playgroud)
然后它保存到我本地 hdfs 实例上的适当位置。
有没有办法配置或初始化 Spark,以便
rdd.saveAsTextFile("/tmp/sample")
Run Code Online (Sandbox Code Playgroud)
会默认保存到HDFS吗?
当我跑步时回答下面的评论者
hdfs getconf -confKey fs.defaultFS
Run Code Online (Sandbox Code Playgroud)
我懂了
17/11/28 09:47:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
hdfs://localhost:9000
Run Code Online (Sandbox Code Playgroud)
终于弄清楚了:
export HADOOP_CONF_DIR="/opt/hadoop-2.9.0/etc/hadoop/" (或实际安装 hadoop 的位置。),这在此处记录:https:
//spark.apache.org/docs/latest/configuration.html事实证明,“陷阱”必须是HADOOP_CONF_DIR完全解析的路径,没有〜。很长一段时间以来,我
export HADOOP_CONF_DIR="~/opt/hadoop-2.9.0/etc/hadoop"
Run Code Online (Sandbox Code Playgroud)
这似乎无法正常工作。更改为绝对路径解决了问题。