Apache spark Spark wholeTextFiles shell和应用程序之间的差异
我复制粘贴了一行,看起来像这样Apache spark Spark wholeTextFiles shell和应用程序之间的差异,apache-spark,Apache Spark,我复制粘贴了一行,看起来像这样 val files = sc.wholeTextFiles("file:///path/to/files/*.csv") 从运行Spark shell到不运行的应用程序。相反,我得到的模式匹配0个文件,即使在shell中,我可以看到所有文件并由Spark读取它们 我错过了什么?这是文件权限问题吗 我正在按如下方式运行该应用程序: spark-submit \ --master yarn \ --deploy-mode cluster \ --file
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
为了使此工作正常,您的所有执行者都需要访问此文件。如果文件不在每个执行器的本地文件系统中,那么您将遇到问题 一个选项是将文件放在hdfs上,并提供路径为
hdfs:/path/to/file.csv
。这样所有的执行人都可以访问它
另一个选项是在
--files
参数中传递文件。这将把文件发送给所有执行者,以便他们都有权访问该文件。为了使其正常工作,您的所有执行者都需要访问该文件。如果文件不在每个执行器的本地文件系统中,那么您将遇到问题
一个选项是将文件放在hdfs上,并提供路径为hdfs:/path/to/file.csv
。这样所有的执行人都可以访问它
另一个选项是在
--files
参数中传递文件。这将把文件发送给所有执行者,以便他们都能访问它。您的文件是存在于本地文件系统还是hdfs中?您提供的是绝对路径还是相对路径?它位于本地FS上,路径如模拟示例中所示:绝对。您如何运行应用程序?打包为程序集jar(带sbt程序集)然后通过spark submit
和--master warn cluster
选项提交到集群(见原始问题和编辑)。您的文件是否存在于本地文件系统或hdfs中?您提供的是绝对路径还是相对路径?它位于本地FS上,路径如模拟示例中所示:绝对。如何运行应用程序?打包为程序集jar(带sbt程序集)然后通过spark submit
和--master warn cluster
选项提交到集群(见原始问题和编辑)。是的,我刚离开笔记本电脑就发现了这个问题。HDFS是最好的解决方案。谢谢顺便说一句,我仍然感到困扰的是,在火花壳中,这是有效的。壳牌公司怎么能解决这个问题?它是否只使用本地节点(即1个执行器)?Spark Shell可以工作,因为它在文件所在的本地启动应用程序主节点@IanYep,我在离开笔记本电脑后发现了一个。HDFS是最好的解决方案。谢谢顺便说一句,我仍然感到困扰的是,在火花壳中,这是有效的。壳牌公司怎么能解决这个问题?它是否只使用本地节点(即1个执行器)?Spark Shell之所以能工作,是因为它在文件所在的@Ian位置本地启动应用程序主节点