如何在 pyspark 数据框中读取 csv 文件时读取选定的列?

Posted

技术标签:

【中文标题】如何在 pyspark 数据框中读取 csv 文件时读取选定的列?【英文标题】:How to read selected columns while reading csv file in pyspark dataframe? 【发布时间】:2021-03-04 04:56:31 【问题描述】:

我在读取 csv 文件时尝试读取选定的列。假设 csv 文件有 10 列,但我只想读取 5 列。有没有办法做到这一点?

我们可以使用 usecols 的 Pandas,但 pyspark 中是否也有可用的选项?

熊猫:

df=pd.read_csv(file_path,usecols=[1,2],index_col=0)

派斯帕克:

?

【问题讨论】:

这能回答你的问题吗? How to read specific column in pyspark? 但是如何直接读取呢? 【参考方案1】:

如果要读取前 5 列,可以在读取整个 CSV 文件后选择前 5 列:

df = spark.read.csv(file_path, header=True)
df2 = df.select(df.columns[:5])

【讨论】:

我们可以在读取 csv 文件时使用“选择”选项吗? 我不这么认为。但是,这不会导致性能下降,因为 CSV 文件是延迟读取的。只会读取前 5 列,因为您只选择了前 5 列。 但先读取文件,然后选择 5 列。我认为这个过程也需要一些时间。 由于Spark的惰性求值,文件没有被读取,所以不会花时间。

以上是关于如何在 pyspark 数据框中读取 csv 文件时读取选定的列?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模式匹配从 pyspark 数据框中删除行?

pyspark 使用模式将 csv 文件加载到数据框中

使用 pyspark 读取多个 csv 文件

PySpark-如何从此数据框中过滤行

如何在 pyspark 中启用 csv 文件的多行读取

如何将 CSV 值与 pyspark 数据框中的单元格中的值分别分隔为新列及其值