我是Spark的新手。我正在尝试在EMR集群中读取本地CSV文件。该文件位于:/home/hadoop/. 我使用的脚本如下:
spark = SparkSession \
.builder \
.appName("Protob Conversion to Parquet") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()\
df = spark.read.csv('/home/hadoop/observations_temp.csv, header=True)
当我运行脚本时,会出现以下错误信息:
pyspark.sql.utils.AnalysisException: u'Path does not exist: hdfs://ip-172-31-39-54.eu-west-1.compute.internal:8020/home/hadoop/observations_temp.csv
然后我发现我必须在文件路径中添加file://,这样它才能在本地读取文件:
df = spark.read.csv('file:///home/hadoop/observations_temp.csv, header=True)
但是这一次,上述方法出现了不同的错误:
在第0.0阶段丢失了任务0.3(TID 3,
ip-172-31-41-81.eu-west-1.compute.internal,执行器1): java.io.FileNotFoundException: 文件 file:/home/hadoop/observations_temp.csv不存在
我认为这是因为file://扩展名仅在本地读取文件,而不会将文件分布到其他节点。
你知道怎样可以读取csv文件并使其对所有其他节点可用吗?