在 Pyspark 中读取 CSV 文件引发错误 FileNotFound 错误
Posted
技术标签:
【中文标题】在 Pyspark 中读取 CSV 文件引发错误 FileNotFound 错误【英文标题】:Read CSV file in Pyspark raises error FileNotFound Error 【发布时间】:2020-03-09 17:04:46 【问题描述】:我在 Pyspark 和/或 Spark 中读取 CSV 文件时遇到问题。
我的目标是: 将某个目录下的所有 CSV 文件读入 Pandas 数据框。
我最熟悉 Python,包括 Pandas。因此,这是我的首选语言。文件比较小,计算应该没问题
由于隐私原因,我修改了一些文件和路径的名称 - 所以它们具有“奇怪”的名称。
我的第一步是导入 Pandas 用 CSV 文件检查文件夹的内容。
%pyhton
import pandas as pd
%sh
hdfs dfs -ls /dbm/ast-gbm/ntsf
结果:
找到 140 件商品
/dbm/ast-gbm/ntsf/ast1234.csv
找到的文件列表 - 为简洁起见此处省略
到目前为止一切顺利!
接下来我尝试使用 Python 读取一个示例 CSV 文件。问题从这里开始。
df = pd.read_csv("/dbm/ast-gbm/ntsf/ast1234.csv")
导致问题1:
[... - 为简洁起见,此处省略]
FileNotFoundError:[Errno 2] 文件 b'/dbm/ast-gbm/ntsf/ast1234.csv' 不存在:b'/dbm/ast-gbm/ntsf/ast1234.csv'
由于我能够使用 shell 列出所有文件,因此我不理解错误。
作为一种解决方法,我尝试将 CSV 文件加载到 spark 数据帧中并将其转换为 Pandas 数据帧。类似于以下*** post 的建议。
%spark.spark
spark.conf.set("spark.sql.execution.arrow.enabled", "true")
val ast_all = spark.read
.format("csv")
.option("sep", ";")
.option("inferSchema", "true")
.option("header", "true")
.load("/dbm/ast-gbm/ntsf/*.csv")
ast_all.createOrReplaceTempView("ast_all")
df = ast_all.select("*").toPandas()
导致问题2:
console:40: error: value toPandas 不是 org.apache.spark.sql.DataFrame 的成员
df = ast_all.select("*").toPandas()
理想情况下,我会找到问题 1 或问题 2 的解决方案。或者,另一种将 140 个 csv 文件加载到 pandas 数据框中的方法也可以。
有什么想法吗?谢谢!
【问题讨论】:
【参考方案1】:正在尝试修复problem 2
:
1 - 此语句错误:val ast_all = spark.read
。该代码是Scala
,而不是python
。将其替换为ast_all = spark.read
2 - 您可以删除 ast_all.createOrReplaceTempView("ast_all")
。不需要此语句。
3 - df = ast_all.select("*").toPandas()
需要导入 pandas
,因此请在文件顶部添加 import pandas as pd
。
【讨论】:
好的,谢谢! 1和2 - 我已经做到了! 3 - Pandas 在 Pandas 语句上方导入。我的问题并不清楚 - 抱歉。我编辑了这个问题。不幸的是,错误没有改变以上是关于在 Pyspark 中读取 CSV 文件引发错误 FileNotFound 错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 pyspark 数据框中读取 csv 文件时读取选定的列?
apache zeppelin 使用 pyspark 读取 csv 失败