python - 在 Pyspark 中导入 csv 时如何修复“'路径不存在”
问题描述
我正在关注本教程(https://www.guru99.com/pyspark-tutorial.html)并尝试使用 sqlContext.read.csv 读取 csv 文件,但此错误显示:'路径不存在:文件:/ C:/Users/asus/AppData/Local/Temp/spark-62c50c87-060e-49f7-b331-111abfa496f3/userFiles-da6cdfff-ea8a-426c-b4f4-fe5a15c67794/adult.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;'
解决方案
您应该按照您粘贴的网站上的说明进行操作,首先执行以下操作:
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)
推荐阅读
- java - 如何从 Java 中的主类访问 src.test 包或如何从主类运行测试类?
- php - 在 Laravel 中找不到弹性类
- c - int、short、long、long long 的大小?
- azure - Azure 表存储随机返回空值
- java - 仅当光传感器事件从 100 到 50 时如何计算,如果它从 0 到 50 则不计算
- security - 如何防止对 Compute Engine 外部 IP 地址的公开访问?
- r - 将虚拟变量从数字转换为 R 中卡方检验的因子
- kubernetes - coredns pod 始终处于 CrashLoopBackOff 状态
- android - 找不到插件“cordova-plugin-ionic”的 plugin.xml
- swift - 如何在不依赖 indexPath 的情况下实现 didSelectRowAt 方法