我已经复制粘贴了一行看起来像这样的
val files = sc.wholeTextFiles("file:///path/to/files/*.csv")
从运行它的Spark shell到应用程序,它不运行。相反,我得到的模式匹配0个文件,即使在shell中我可以看到所有文件而Spark会读取它们。
我错过了什么?这是文件权限问题吗?
我按以下方式运行应用程序:
spark-submit \
--master yarn \
--deploy-mode cluster \
--files /usr/hdp/current/spark/conf/hive-site.xml \
--num-executors 20 \
--driver-memory 8G \
--executor-memory 4G \
--class com.myorg.pkg.MyApp \
MyApp-assembly-0.1.jar
答案 0 :(得分:2)
为了使其正常工作,您的所有执行程序都需要访问此文件。如果文件不在每个执行程序的本地文件系统上,那么您将遇到问题。
一种选择是将文件放在hdfs上,并将路径提供为hdfs:/path/to/file.csv
。这样所有执行者都可以访问它。
另一种选择是在--files
参数中传递文件。这会将文件发送给所有执行程序,以便他们都可以访问它。