2017-07-31 62 views
3

我们在Dask(Python)和Drill(使用Sergeant数据包的R)中生成parquet文件。我们已经注意到了一些问题:生成镶木地板文件 - R和Python之间的差异

  1. Dask(即fastparquet)的格式具有_metadata_common_metadata文件而parquet文件中R \ Drill没有这些文件,并有parquet.crc文件,而不是(可删除)。这些parquet实现之间有什么区别?
+0

据我所知,有各种[parquet版本](http://matthewrocklin.com/blog/work/2017/06/28/use-parquet),但很难理解差异 –

+0

您应该发布这三个问题作为堆栈溢出单独的问题。将多个作为单个实例发布很难回答,并将其集成到SO用户界面中。 – xhochy

+0

Thx为输入 - 将这样做 –

回答

2

(只回答:1),请发表不同的问题,使其更容易回答)

_metadata_common_metadata是不需要的镶木集辅助文件,这些文件的人是由星火使用/ Dask/Hive/...来推断数据集所有Parquet文件的元数据,而无需读取所有文件的页脚。与此相反,Apache Drill在每个文件夹中(按需)生成一个包含所有Parquet文件所有页脚的类似文件。只有在数据集上的第一个查询中,所有文件才会被读取,其他查询将只读取缓存所有页脚的文件。

使用_metadata_common_metadata的工具应该能够利用它们来缩短执行时间,但不依赖它们进行操作。如果它们不存在,那么查询引擎就只需要读取所有页脚。

+0

非常正确。另外,fastparquet(dask用来创建文件的库)也可以读取不带'_metadata'的实地数据文件列表,但最初加载元数据会变慢。 Spark用来制作这些文件,但不再做,我相信Hive仍然会。 – mdurant