生成镶木地板文件 - R 和 Python 之间的差异
Posted
技术标签:
【中文标题】生成镶木地板文件 - R 和 Python 之间的差异【英文标题】:Generating parquet files - differences between R and Python 【发布时间】:2018-01-07 00:32:16 【问题描述】:我们在Dask
(Python)和Drill
(R使用Sergeant
数据包)中生成了一个parquet
文件。我们注意到了一些问题:
Dask
的格式(即fastparquet
)有一个_metadata
和一个_common_metadata
文件,而R \ Drill
中的parquet
文件没有这些文件,而是有parquet.crc
文件(可以删除)。这些parquet
实现之间有什么区别?
【问题讨论】:
我知道parquet versions有各种不同,但很难理解其中的区别 您应该将这三个问题作为单独的问题发布在 Stack Overflow 上。将多个作为单个实例发布是很难回答和集成到 SO UI 中的。 感谢输入 - 会这样做 【参考方案1】:(只回答1),请分开发帖,方便回答)
_metadata
和 _common_metadata
是 Parquet 数据集不需要的辅助文件,Spark/Dask/Hive/... 使用这些辅助文件来推断数据集的所有 Parquet 文件的元数据,而不需要读取所有文件的页脚。与此相反,Apache Drill 在每个文件夹中(按需)生成一个类似的文件,其中包含所有 Parquet 文件的所有页脚。仅在对数据集的第一次查询时读取所有文件,后续查询将仅读取缓存所有页脚的文件。
使用_metadata
和_common_metadata
的工具应该能够利用它们来获得更快的执行时间,而不是依赖它们进行操作。如果它们不存在,则查询引擎只需要读取所有页脚。
【讨论】:
非常正确。此外,fastparquet(dask 将用于创建文件的库)也可以读取没有_metadata
的 parquet 数据文件列表,但最初加载元数据会更慢。 Spark 曾经制作这些文件,但现在不再制作了,我相信 hive 仍然制作。以上是关于生成镶木地板文件 - R 和 Python 之间的差异的主要内容,如果未能解决你的问题,请参考以下文章
我对镶木地板文件和 python 完全陌生,谁能告诉我如何在 pyspark 中读取带有标题的镶木地板文件
在 Azure Databricks 中的日期范围之间读取镶木地板文件的有效方法