代码之家  ›  专栏  ›  技术社区  ›  Thomas Decaux

将异构数据存储在HDFS内的parquet文件中的数据模式

  •  0
  • Thomas Decaux  · 技术社区  · 6 年前

    {"event":"click", "click_url":..., ...},
    {"event":"view","view_item":...., ...}
    

    每个事件(单击/查看/加载/点击…)都有不同的字段。

    随着我们计划添加越来越多的事件,这是不可伸缩的(我不能想象一个超过128列的拼花文件!)。

    我们已经使用分区了: year=2018/month=8/day=20 ,单个配置单元表和apachespark进行查询。

    什么样的体系结构(可能是一个按事件划分的分区和一个相关联的配置单元表)最适合这种情况?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Zoltan    6 年前

    您可以采用不同模式的联合,就像您已经在做的那样。存储“稀疏”或“宽”数据(表中的列数较多,但单个记录中的列数较少)实际上是Parquet擅长的一个领域。一些文章摘录提到了这一点:

    Dremel made simple with Parquet

    具有大量空值的稀疏列将压缩为几乎为零

    Parquet: Columnar Storage for Hadoop Data :

    当查询是在稀疏数据或列选择中基数较低时,Parquet确实非常出色。

    它特别适用于从宽表(有许多列)中读取特定列的查询,因为只读取所需的列,并且IO最小化。”

    您可能希望在查询中提及特定的列,而不是执行 SELECT * 利用这一点。