当前位置:  开发笔记 > 编程语言 > 正文

在Spark中加载本地文件(而不是HDFS)失败

如何解决《在Spark中加载本地文件(而不是HDFS)失败》经验,为你挑选了1个好方法。

我有一个问题 - 如何在PySpark上使用sc.textFile加载本地文件(不在HDFS上,而不在S3上).我读了这篇文章,然后复制sales.csv到主节点的本地(不是HDFS),最后执行了以下

sc.textFile("file:///sales.csv").count()

但它返回以下错误,说 file:/click_data_sample.csv does not exist

Py4JJavaError:调用z:org.apache.spark.api.python.PythonRDD.collectAndServe时发生错误.:org.apache.spark.SparkException:作业因阶段失败而中止:阶段3.0中的任务0失败4次,最近失败:阶段3.0中丢失任务0.3(TID 10,ip-17x-xx-xx-xxx.ap -northeast-1.compute.internal):java.io.FileNotFoundException:文件文件:/sales.csv不存在

我试过了file://sales.csv,file:/sales.csv但都失败了.

你给我一些如何加载本地文件的建议是非常有帮助的.


Noted1:

我的环境是亚马逊emr-4.2.0 + Spark 1.5.2.

所有端口都已打开


Noted2:

我确认了HDFS或S3 工作的加载文件.

这是从HDFS加载的代码 - 下载csv,提前复制到hdfs然后用sc.textFile加载("/ path/at/hdfs")

commands.getoutput('wget -q https://raw.githubusercontent.com/phatak-dev/blog/master/code/DataSourceExamples/src/main/resources/sales.csv')
commands.getoutput('hadoop fs -copyFromLocal -f ./sales.csv /user/hadoop/')
sc.textFile("/user/hadoop/sales.csv").count()  # returns "15" which is number of the line of csv file

这是从S3加载的代码 - 提前将S3放入csv文件,然后使用"s3n://"标志加载sc.textFile("s3n:// path/at/hdfs").

sc.textFile("s3n://my-test-bucket/sales.csv").count() # also returns "15" 

facha.. 10

文件读取发生在执行程序节点上.为了使代码正常工作,您应该在所有节点上分发文件.

如果Spark驱动程序在文件所在的同一台机器上运行,您可以尝试读取文件(例如使用f=open("file").read()for python),然后调用sc.parallelize将文件内容转换为RDD.



1> facha..:

文件读取发生在执行程序节点上.为了使代码正常工作,您应该在所有节点上分发文件.

如果Spark驱动程序在文件所在的同一台机器上运行,您可以尝试读取文件(例如使用f=open("file").read()for python),然后调用sc.parallelize将文件内容转换为RDD.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有