我有火花提交scirpt如下:
spark-submit \
--name daily_job\
--class com.test.Bootstrapper \
--files /home/user/*.csv\
--conf spark.executor.memory=2g\
--conf spark.executor.cores=2\
--master spark://172.17.0.4:7077\
--deploy-mode client \
--packages com.typesafe:config:1.3.1\
file:///home/user/workspace/spark-test/target/spark-test-0.1-SNAPSHOT.jar
群集配置 - master& 2名不同容器的工人。
作业开始后,我可以看到csv文件被放入:
工人:
/usr/local/spark-2.0.2-bin-hadoop2.7/work/app-20170116160937-0036/0/test.csv
驱动:
/tmp/spark-f65b2466-e419-49bd-8da7-9f2b94cbf870/userFiles-abb14b33-58b1-47d6-935e-6c2943e3d55c/test.csv
问题是 - 如何正确阅读此文件? 目前我正在做如下:
private var initial: DataFrame = spark.sqlContext.read
.option("mode", "DROPMALFORMED")
.option("delimiter", conf.delimiter)
.option("dateFormat", conf.dateFormat)
.schema(conf.schema)
.csv("file:///*.csv")
导致FileNotFoundException。
答案 0 :(得分:1)
如果您使用的是--files
,则文件将被放置在每个执行程序的工作目录中。因此,您可以使用在提交命令中指定的相同路径访问它们:
var initial = spark.read
.option("mode", "DROPMALFORMED")
.option("delimiter", conf.delimiter)
.option("dateFormat", conf.dateFormat)
.schema(conf.schema)
.csv("file:///home/user/*.csv")
或者,您可以使用SparkContext.addFile()和SparkFiles.get()