为什么hbase完全扫描和聚合比parquet慢,尽管它也是一个列数据库?

c7rzv4ha  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(501)

我一直在尝试将“正确”的技术用于360度客户应用程序,它要求:
一个宽列表,每个客户是一行,有很多列(表示>1000)
我们每天有大约20个批量更新分析作业在运行。每个分析作业都会查询并更新所有行的一小组列。它包括聚合用于报告的数据,以及加载/保存用于机器学习算法的数据。
我们在几列中更新客户信息,每天更新的行数不超过100万行。更新工作负载分布在不同的工作时间。我们有两亿多排。
我试过使用hbase,第1点和第3点都满足了。但我发现在hbase上进行分析(load/save/aggregate)非常慢,比使用parquet慢10倍。我不明白为什么,parquet和hbase都是柱状dbs,而且我们在hbase集群中很好地分配了工作负载(“每个区域的请求”是这样说的)。
有什么建议吗?我用错工具了吗?

sauutmhj

sauutmhj1#

Parquet地板和hbase都是柱状dbs
这个假设是错误的:
parquet不是数据库。
hbase不是列式数据库。它经常被认为是一个,但这是错误的。 HFile 不是柱状的(Parquet地板是)。
hbase的速度非常慢,比使用 parquet 慢10倍
hbase完全扫描通常比等效的hdfs原始文件扫描慢得多,因为hbase针对随机访问模式进行了优化。你没有具体说明你是如何扫描表格的- TableSnapshotInputFileFormat 比天真的人快得多 TableInputFormat ,但仍比原始hdfs文件扫描慢。

相关问题