【问题标题】:Read csv from zipfile using pyspark使用 pyspark 从 zipfile 读取 csv
【发布时间】:2019-07-23 05:59:59
【问题描述】:

我正在尝试从 zip 文件中读取 csv 数据,我知道 spark.read.csv() 中自然支持 .gz 文件,但这是一个 zip 文件

How to open/stream .zip files through Spark? 我检查了上述问题并尝试使用它,但不确定如何将 RDD(表示为文本行的 csv 数据的整个文件)parse 转换为 CSV 数据框

这是用于将数据提取到 RDD 的代码段

import zipfile
import io

def zip_extract(x):
  file_path, content = row
  z_file = zipfile.ZipFile(io.BytesIO(content), "r")
  files = [i for i in z_file.namelist()]
  return z_file.open(files[0]).read()


zips = sc.binaryFiles("/path/to/some/zipfiles.zip")
data_rdd = zips.map(zip_extract)

将 rdd 传递给 spark.read.csv() 并没有给出预期的结果

【问题讨论】:

  • 你找到了一些好的解决方案吗?
  • 不,我最终添加了一个预处理步骤来提取它们,然后再传递给 spark
  • 看来我们可以这样做stackoverflow.com/questions/28569788/…
  • 我将在接下来几天实施时发布解决方案......因为我们需要它

标签: python csv apache-spark pyspark


【解决方案1】:

不确定我是否理解正确,如果你已经有一个 RDD,它不是一个简单的调用 data_rdd.toDF() 将其转换为 DataFrame?

df=data_rdd.toDF()

【讨论】:

  • 这只是将文本数据从 RDD 转换为 DF,但文本数据是 csv,我希望将其解析为 DF
  • 我不相信这种东西是受支持的,至少目前是这样。如果你不想要一个 DF,你到底想做什么?
  • 我不认为你理解清楚,我想要和 DF,但我希望将 csv 解析为 DF,不仅仅是作为文本数据,而是作为 CSV 列(适用于 spark.read .csv() 用于 .gz 文件,但不是 zip 文件)
猜你喜欢
  • 2022-01-03
  • 2020-04-30
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多