为什么PySpark认为我的文件在本地不存在?

时间:2017-12-05 01:32:22

标签: python apache-spark pyspark distributed-computing pyspark-sql

我正在尝试使用本地生活的pyspark读取文本文件,它告诉我该文件不存在:

sc = SparkContext()
sc._conf.setMaster("local[*]")
sc.setLogLevel("DEBUG")
sqlContext = SQLContext(sc)

inpath='file:///path/to/file'
input_data = sqlContext.read.text(inpath)

我得到了这个:

Py4JJavaError: An error occurred while calling o52.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0, <hostname>): java.io.FileNotFoundException: File file:/path/to/file does not exist

据我所知,当您在群集中运行文件时,需要确保在本地读取文件时更改spark的配置。但是,这位于主节点上,并且不需要跨所有节点分发文件。

我查看了这个问题How to load local file in sc.textFile, instead of HDFS,我尝试了设置sc._conf.setMaster("local[*]")的建议,但这没有帮助 - 重新启动火花上下文后重新运行它仍然无效。

我可以更改任何其他设置,以便可以使用吗?

1 个答案:

答案 0 :(得分:1)

创建SparkContext对象时启动spark进程。  这意味着如果您在创建配置后尝试设置配置值,则已经太晚了。您应该在创建SparkContext之前设置任何配置值。例如:

conf = SparkConf()
conf = conf.setMaster('local[*]')

sc = SparkContext(conf)

或者,您可以在spark-default.conf文件中设置master,也可以使用&#34; - master local&#34;使用spark-submit或pyspark运行spark时的命令行参数。