pandas - Pyarrow 用于 Parquet 文件,还是只是 Pandas ?

标签 pandas parquet pyarrow

我一直在 Azure Blob 上测试 parquet 文件,而不是将数据加载到 PostgreSQL 表中,因为我用 pandas 做了很多提取/转换步骤,可能很快就会探索 Spark。

  1. 使用 pyarrow 打开 csv 文件是否有任何优点或缺点 pd.read_csv 的?
  2. 我应该使用 pyarrow 来编写 parquet 文件而不是 pd.to_parquet?

最终,我将存储原始文件(csv、json 和 xlsx)。我用 pandas 或 pyarrow 阅读这些,添加一些元数据列,然后保存一个精炼/转换的 Parquet 文件(Spark 风格,快速压缩)。然后,我使用 pyarrow(最终可能是 Spark)读取这些转换后的文件,并执行一些聚合或其他可视化操作(我可能将其另存为另一个 Parquet 文件)。

在将数据转换为 pandas 数据帧之前使用 pyarrow 读取数据,或者在将数据保存为 .parquet 文件之前使用 pyarrow 转换数据,我是否使用了更多内存?我只是想确保我的效率,因为我正在设置一个 Airflow 运算符(operator),它将对大量文件/数据执行这些步骤。

最佳答案

Are there any pros or cons using pyarrow to open csv files instead of pd.read_csv?

没有在 spark 上使用 pandas dataframe 以分布式模式计算数据的解决方法。 pandas dataframe 和 spark 一起使用并不实用,尤其是对于大型数据集。你基本上是在使用 spark host 的力量而不是 spark 本身

Should I use pyarrow to write parquet files instead of pd.to_parquet?

一次重构并替换所有 pandas 依赖项并不容易,但在数据获取/设置操作的任何时候使用 pyarrow 是理想的

Am I using more memory by reading data with pyarrow before converting it to a pandas dataframe, or by converting data with pyarrow before saving it as a .parquet file?

它使用从 pyarrow 到 pandas 的更多内存

总而言之,假设您没有从内存转储中读取 pandas 数据帧,那么请尝试将数据加载到 spark 数据帧,并在整个过程中使用 spark 内置数据帧和 pyarrow parquet 文件

关于pandas - Pyarrow 用于 Parquet 文件,还是只是 Pandas ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57940340/

相关文章:

python - 使用 Array<Map<String,String>> 列读取 Parquet 文件

python - 显示数据框时显示趋势箭头

python - 为每个 n 个元素创建相同的时间戳

pyspark - AWS 胶水作业将字符串映射到日期和时间格式,同时从 csv 转换为 Parquet

python - 在spark中加载多个文件时出现问题

python - pyarrow 内存泄漏?

python - 将 pandas 列表数据框转换为 numpy 数组

python - 如何在 Python 中执行等效的 Excel INDEX MATCH

python - 如何从 Python 3 中的 awswrangler 捕获 exceptions.NoFilesFound 错误

apache-spark - GCP 上的 PySpark PandasUDF - 内存分配