我正在尝试使用本地生活的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[*]")
的建议,但这没有帮助 - 重新启动火花上下文后重新运行它仍然无效。
我可以更改任何其他设置,以便可以使用吗?
答案 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时的命令行参数。