Parquet的那些事(三)嵌套数据模型

在大数据系统中,我们总是不可避免的会遇到嵌套结构的数据。这是因为,在很多场景下,嵌套数据结构能更好的表达数据内容与层级关系,因此很多数据源会采用这样的结构来输出数据。然而,相比关系型的结构化数据,这样的数据并不利于高效查询,因此在很多场景下,我们还会通过ETL将其变为扁平结构的数据来存储。

2010年,Google发表了论文Dremel: Interactive Analysis of Web-Scale Datasets,阐述了一种针对嵌套数据的交互式查询系统,为业界提供了思路。正如官方文档所述,Parquet在最初设计时,便借鉴了Dremel的数据模型思想,支持嵌套结构的存储。当然,Parquet只是一种列式存储格式,要完成类似Dremel的查询功能,还需要计算引擎的配合。

Parquet is built from the ground up with complex nested data structures in mind, and uses the record shredding and assembly algorithm described in the Dremel paper. We believe this approach is superior to simple flattening of nested name spaces.

本文主要探讨Parquet是如何支持嵌套结构存储的。搞清楚这些,能帮助我们更好的设计数据存储方式、选择合适的查询引擎。本文将采用下面的3条数据来进行阐述,后面用“示例”来代表。另外,文中所述是基于Spark 2.4.0、Parquet 1.10.0的。

Record 1:
{
   
    "sid":"8509_1576752657",
    "appid":[81, 205, 67],
    "tcp": {
   
        "mss": 1750,
        "flag": 344
  
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值