葫芦茶

注册

 

发新话题 回复该主题

物化列字节为解决Spark嵌套列查询 [复制链接]

1#
白癜风医院那里比较好         http://www.yushiels.com/

本文来自11月举办的Data+AISummit(原Spark+AISummit),主题为《MaterializedColumn-AnEfficientWaytoOptimizeQueriesonNestedColumns》的分享,作者为字节跳动的郭俊。

在数据仓库领域,使用复杂类型(如map)中的一列或多列,或者将许多子字段放入其中的场景是非常常见的。这些操作可能会极大地影响查询性能,因为/p>

?这些操作非常废IO。比如我们有一个字段类型为Map,其包含数十个子字段那么在读取这列时需要把整个列都读出来。并且Spark将遍历整个map获得目标键的值。?在读取嵌套类型列时不能利用向量化读取。?读取嵌套列时不能使用算子下推(Filterpushdown)。

在过去的一年里,字节的数据引擎团队在ApacheSpark中添加了一系列优化来解决Parquet格式中的上述问题。

其中包括支持对Parquet中复杂数据类型的向量化读取,允许对Parquet中的结构列进行子字段修剪,等等。此外,该团队还开发了一个名为物化列(materializedcolumn)的新特性,透明地解决了任意列式存储(不仅仅是Parquet)的上述问题。在过去的一年里,物化列在字节跳动数据仓库中工作得很好。以一个典型的表为例,每天增量的数据量约为TB。在它上面创建15个物化列可以提高超过%的查询性能,而存储开销不到7%。在这次讨论中,我们将深入介绍SparkSQL中物化列的内部原理,描述物化列的使用场景。

下面是本文的视频,相关PPT可以

分享 转发
TOP
发新话题 回复该主题