在HBase与Parquet文件中存储数据

sov*_*van 14 hadoop hbase phoenix parquet

我是大数据的新手,我正在尝试了解持久化和检索数据的各种方法.我知道Parquet和HBase都是面向列的存储格式,但Parquet是面向文件的存储,而不是像HBase那样的数据库.我的问题是:

  1. 使用Parquet而不是HBase的用例是什么?
  2. 是否存在Parquet可与HBase一起使用的用例.
  3. 在执行连接的情况下,Parquet的性能会比HBase更好(例如,通过像Phoenix这样的SQL皮肤访问)?

Aja*_*ava 22

正如你已经在提问时说,实木复合地板是一种存储,而HBase的是存储(HDFS)+查询引擎(API /壳),因此,一个有效的比较应该镶木+黑斑羚/蜂巢/ Spark和HBase的之间进行.以下是主要差异 -

1)磁盘空间 - 与HBase相比,Parquet占用的磁盘空间更少.在HBase中,Parquet编码比块压缩节省更多空间.

2)数据摄取 - 镶木地板中的数据摄取比HBase更有效.一个简单的原因可能是第1点.在镶木地板的情况下,需要在磁盘上写入更少的数据.

3)在密钥上记录查找 - HBase更快,因为这是一个键值存储,而镶木地板不是.未来版本将支持镶木地板索引.

4)过滤器和其他扫描查询 - 由于镶木地板存储有关存储在行组中的记录的更多信息,因此它可以在扫描数据时跳过大量记录.这就是原因,它比HBase更快.

5)更新记录 - HBase提供记录更新,而在镶木地板中可能会出现问题,因为需要重新编写镶木地板文件.仔细设计架构和分区可能会改进更新,但它与HBase无法比较.

通过比较上述特性,HBase似乎更适合需要更新的情况,查询主要涉及键值查找.涉及键范围扫描的查询在HBase中也将具有更好的性能.

Parquet适用于更新非常少且查询涉及过滤器,连接和聚合的用例.