【问题标题】:How to append multiple parquet files to one dataframe in Pandas如何将多个镶木地板文件附加到 Pandas 中的一个数据帧
【发布时间】:2020-03-28 14:07:04
【问题描述】:

我正在使用 Spark 和 Pandas 解压缩 snappy.parquet 文件。我有 180 个文件(我的 Jupyter 笔记本中有 7GB 的数据)。据我了解,我需要创建一个循环来获取所有文件 - 用 Spark 解压缩它们并附加到 Pandas 表?这是代码

findspark.init()

import pyspark 

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

parquetFile = spark.read.parquet("file_name.snappy.parquet")

parquetFile.createOrReplaceTempView("parquetFile")
file_output = spark.sql("SELECT * FROM parquetFile")
file_output.show()

pandas_df = file_output.select("*").toPandas()

这部分有效,我从一个文件中获得了我的 Pandas 数据框,我还有另外 180 个文件需要附加到 pandas_df。谁能帮我吗?谢谢!

【问题讨论】:

标签: pandas apache-spark parquet snappy


【解决方案1】:

使用 Spark,您可以从单个文件或多个文件中 loaddataframe,只需要将您的单个文件的路径替换为文件夹的路径(假设所有 180 个文件都在同一目录)。

parquetFile = spark.read.parquet("your_dir_path/")

【讨论】:

  • 谢谢!那行得通。我现在想将其转换为 Pandas df,以便我更容易执行查询。知道我怎样才能做到这一点吗?我尝试了以下parquetFile_all.createOrReplaceTempView("parquetFile_all") file_output_all = spark.sql("SELECT _o FROM parquetFile_all") file_output_all.show(),这给了我一个错误。
  • 您能分享一下错误吗?你可以看看这个关于如何使用createOrReplaceTempView的问题:stackoverflow.com/questions/44011846/…。此外,根据查询的复杂性,您可以使用 .select / .filter 函数直接在 DF 上执行此操作。示例:stackoverflow.com/questions/42409756/….
  • 我的查询会比较复杂,我会使用正则表达式,但我不确定如何使用 Spark df 执行该操作。此外,我需要与我的同事共享数据,所以理想情况下我想在之后将其转换为 csv 文件。这是我在 SO 中创建了另一个问题的错误的链接。 stackoverflow.com/questions/59181687/…
  • 我看到你发布的新问题,这是我的建议:1-输出数据似乎真的很大,这在两部分中不方便:处理(基于你使用熊猫)和保存它(如果你想与其他人分享)。 2 - 为了处理它,不要使用 pandas 并使用 spark-sql (createOrReplaceTempView ) 并对 tmp 表进行查询。 3 - 为了共享输出,请将其保存为csv (DF.write.option("header", "true").csv(OUTPUT_PATH)),但不要将其收集在一个文件中,以免发生同样的错误。
  • 太棒了!很大的帮助。非常感谢!
猜你喜欢
  • 2022-01-17
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 2019-12-22
  • 2018-06-24
  • 2018-04-17
  • 2020-03-23
相关资源
最近更新 更多