我知道这是一种使用Spark的奇怪方式,但我正在尝试使用Spark将数据帧保存到本地文件系统(而不是hdfs),即使我在cluster mode.我知道我可以使用,client mode但我确实想要运行cluster mode并且不关心应用程序将作为驱动程序运行的节点(总共3个).下面的代码是我正在尝试做的伪代码.
// create dataframe
val df = Seq(Foo("John", "Doe"), Foo("Jane", "Doe")).toDF()
// save it to the local file system using 'file://' because it defaults to hdfs://
df.coalesce(1).rdd.saveAsTextFile(s"file://path/to/file")
Run Code Online (Sandbox Code Playgroud)
这就是我提交spark应用程序的方式.
spark-submit --class sample.HBaseSparkRSample --master yarn-cluster hbase-spark-r-sample-assembly-1.0.jar
如果我在local mode但是不在,这可以正常工作yarn-cluster mode.
例如,java.io.IOException: Mkdirs failed to create file使用上面的代码.
我已经将df.coalesce(1)部分更改为df.collect并尝试使用普通Scala保存文件,但最终得到了一个Permission denied.
我也尝试过:
spark-submit与root用户chownED yarn:yarn,yarn:hadoop,spark:spark …