尽管HBase的全扫描和聚合功能也是柱状数据库,但为什么它却比拼花还要慢?

时间:2018-07-16 03:12:36

标签: hbase aggregate parquet nosql-aggregation column-aggregation

我一直在尝试将“正确的”技术用于360度客户应用程序,它要求:

  1. 一个宽列表,每个客户都是一行,有很多列(例如> 1000)
  2. 我们每天有大约20个批量更新分析作业。每个分析作业都会查询并更新所有行的一小列列。它包括汇总数据以进行报告,以及加载/保存数据以供机器学习算法使用。
  3. 我们在多列中更新了客户的信息,每天有<= 100万行。更新工作负载分布在整个工作时间中。我们有2亿多行。

我尝试使用Hbase,满足第1点和第3点。但是我发现在HBase上进行分析(加载/保存/聚合)非常缓慢,它可能比Parquet慢10倍。我不明白为什么,Parquet和Hbase都是列式DB,并且我们已经很好地分散了HBase集群中的工作负载(“每个区域的请求”如此)。

有什么建议吗?我使用的工具是否正确?

1 个答案:

答案 0 :(得分:2)

  

Parquet和Hbase都是柱状数据库

这种假设是错误的:

  • Parquet不是数据库。
  • HBase不是列式数据库。它通常被视为一个,但这是错误的。 HFile 面向列(Parquet )。
  

HBase的运行速度非常慢,它的速度可能比Parquet慢10倍

由于HBase针对随机访问模式进行了优化,因此HBase完全扫描通常比等效的HDFS原始文件扫描要慢得多。您没有指定如何精确扫描表-TableSnapshotInputFileFormat比朴素的TableInputFormat快得多,但仍比原始HDFS文件扫描慢。