如何修复在Pyspark中导入csv时出现的“路径不存在”问题

ajsxfq5m  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(222)

我正在学习本教程(https://www.guru99.com/pyspark-tutorial.html)并尝试使用sqlContext.read.csv读取csv文件,但出现以下错误:“路径不存在:这个文件是一个文件夹,里面有一个文件夹,可以在一个文件夹中找到。'
我听说我可能必须在同一共享文件系统的所有节点上复制文件或使用HDFS,但我不知道具体应该如何做。
这是代码:

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)

df = sqlContext.read.csv(SparkFiles.get("adult.csv"), header=True, inferSchema= True)

这是我得到的结果:

AnalysisException: 'Path does not exist: file:/C:/Users/asus/AppData/Local/Temp/spark-62c50c87-060e-49f7-b331-111abfa496f3/userFiles-da6cdfff-ea8a-426c-b4f4-fe5a15c67794/adult.csv;'
vqlkdk9b

vqlkdk9b1#

您应该按照您粘贴的网站上的说明进行操作,首先执行以下操作:

url = "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/adult_data.csv"
from pyspark import SparkFiles
sc.addFile(url)
sqlContext = SQLContext(sc)

然后,您可以使用read.csv载入档案:

df = sqlContext.read.csv(SparkFiles.get("adult.csv"), header=True, inferSchema= True)

sc.addFile(url)设置SparkFiles的根目录,以便在get函数中使用。您可以运行此命令来检查当前的根目录:

SparkFiles.getRootDirectory()

它应该如下所示:

C:/Users/asus/AppData/Local/Temp/spark-62c50c87-060e-49f7-b331-111abfa496f3/userFiles-da6cdfff-ea8a-426c-b4f4-fe5a15c67794/

所以当你调用SparkFiles.get('adult.csv')时,Spark正在该目录下查找文件,这就是你看到错误消息的原因。
另一种解决方案是下载文件,将其放入本地目录,然后运行:

df = spark.read.csv(your_local_path_to_adult.csv, header=True, inferSchema= True)

相关问题