Parquet文件

 

列存储和行式存储的比较

列存储和传统的行式存储,在存储介质中的排列方式如图所示。这种存储方式也就决定了他们的适用场景。需要事务处理

行存储更适用于OLTP(on-line transaction processing)的场景,在这种场景中,大部分情况下需要存储数据的全量或者一大部分字段,并且需要支持频率不低的更新和插入操作。
而最近火起来的大数据的要求却于此大相径庭,这种场景通常被称为OLAP(On-Line Analytical Processing)。在这种场景中查询可能需要访问几百万甚至几十亿个数据行,且该查询往往只关心少数几个数据列。例如,查询今年销量最高的前20个商品,这个查询只关心三个数据列:时间(date)、商品(item)以及销售量(sales amount)。商品的其他数据列,例如商品URL、商品描述、商品所属店铺,等等,对这个查询都是没有意义的。并且由于需要数据分析,因此需要大量的聚合等复杂操作。这种情况下,列存储就非常适用。

其优缺点总结如下

                             

行式存储 

列式存储 

优点 

Ø  数据被保存在一起
Ø  INSERT/UPDATE容易 

Ø  查询时只有涉及到的列会被读取
Ø  投影(projection)很高效
Ø  任何列都能作为索引 

缺点 

Ø  选择(Selection)时即使只涉及某几列,所有数据也都会被读取 

Ø  选择完成时,被选择的列要重新组装
Ø  INSERT/UPDATE比较麻烦 

另外因为一列的数据大多数都是同构的,因此可以使用更高效的压缩算法来进行数据压缩。
可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量。
压缩编码可以降低磁盘存储空间。由于同一列的数据类型是一样的,可以使用更高效的压缩编码(例如Run Length Encoding和Delta Encoding)进一步节约存储空间。
只读取需要的列,支持向量运算,能够获取更好的扫描性能。

什么是Parquet文件

parquet是一种支持复杂嵌套结构的列存储格式。

http://blog.csdn.net/yu616568/article/details/50993491

http://www.infoq.com/cn/articles/in-depth-analysis-of-parquet-column-storage-format

相关文章:

  • 2021-06-01
  • 2021-10-27
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-04-10
  • 2022-12-23
  • 2022-03-01
  • 2022-12-23
  • 2022-12-23
  • 2017-12-05
  • 2022-01-12
相关资源
相似解决方案