在Parquet中使用嵌套数据类型有什么好处?

时间:2018-03-25 10:29:54

标签: apache-spark nested parquet data-files

使用Parquet文件格式的嵌套数据类型是否有任何性能优势?

AFAIK Parquet文件通常专为查询服务而创建,例如: Athena,因此创建这些的过程可能只是简化了值 - 从而允许更容易查询,更简单的模式,并保留每列的列统计信息。

使用嵌套数据类型可以获得什么好处,例如struct

2 个答案:

答案 0 :(得分:1)

在镶木地板中保持嵌套结构会产生负面影响。如果在镶木地板文件中有嵌套结构,则问题是spark谓词下推不能正常工作。

因此,即使您在镶木地板数据集中使用少量字段,spark也会加载并实现整个数据集。

以下是关于此问题长期打开的ticket

答案 1 :(得分:0)

恰恰相反 - Parquet是一种柱状格式,但是从Spark 2.3.0开始,Spark没有正确使用它(参见https://issues.apache.org/jira/browse/SPARK-4502)并且使用struct / nested格式意味着整个列都将被读取并且你不能仅仅阅读所需的数据

通过@avishek的回答请注意,谓词下推意味着火花(或任何利用镶木地板特征的引擎)将读取整个数据集,这意味着引擎可以使用关于列的元数据(如min man值)来确定如果需要读取夹头,如果需要读取块,则镶木地板将允许只读取所请求的列

已编辑:将评论中的信息移至主要答案