为什么HBase完全扫描和聚合速度比parquet慢,尽管它也是柱状数据库?

为什么HBase完全扫描和聚合速度比parquet慢,尽管它也是柱状数据库?,hbase,aggregate,parquet,nosql-aggregation,column-aggregation,Hbase,Aggregate,Parquet,Nosql Aggregation,Column Aggregation,我一直在尝试将“正确”的技术用于360度客户应用程序,它需要: 一个宽列表,每个客户是一行,有许多列(表示>1000) 我们每天运行约20个批量更新分析作业。每个analytics作业查询并更新所有行的一小组列。它包括聚合用于报告的数据,以及加载/保存用于机器学习算法的数据 我们在几个栏目中更新客户信息,包括 拼花地板和Hbase都是柱状DBs 这种假设是错误的: 拼花地板不是一个数据库 HBase不是一个列数据库。它经常被认为是一个,但这是错误的HFile为非柱状(实木地板为) HBase

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

  • 一个宽列表,每个客户是一行,有许多列(表示>1000)
  • 我们每天运行约20个批量更新分析作业。每个analytics作业查询并更新所有行的一小组列。它包括聚合用于报告的数据,以及加载/保存用于机器学习算法的数据
  • 我们在几个栏目中更新客户信息,包括 拼花地板和Hbase都是柱状DBs

    这种假设是错误的:

    • 拼花地板不是一个数据库
    • HBase不是一个列数据库。它经常被认为是一个,但这是错误的
      HFile
      柱状(实木地板为)
    HBase的速度非常慢,比使用拼花地板慢10倍


    HBase完全扫描通常比等效的HDFS原始文件扫描慢得多,因为HBase针对随机访问模式进行了优化。您没有指定扫描表格的具体方式-
    TableSnapshotInputFileFormat
    比原始的
    TableInputFormat
    快得多,但仍然比原始HDFS文件扫描慢

    我们在HBase上使用Phoenix和Spark SQL数据帧来读取/聚合/写入HBase。该版本是HDP2.5.0,带有HBase 1.1.2、Phoenix 4.7和Spark 1。6@TungVs上次我检查时,默认情况下,spark的所有hbase连接器都使用了
    TableInputFormat
    。如果我们需要spark连接到hbase,我们可以做些什么来提高性能,或者hbase不是适合这项工作的工具,或者有“标准”吗解决我不知道的问题的方法/架构?最近我考虑了像Ignite这样的内存解决方案,但它是一个基于行的DB,因此如果我们只需要缓存几列,这是不可能的(很可能我们没有足够的RAM来缓存所有的表)。另一个选择是Kudu,但它的最大限制是300列,我们有1000多列。我已经看到,再也没有人回答这些问题了。对于您的回答,澄清原始标题(为什么Hbase扫描速度慢)就足够了,因此我将接受它,并为进一步的问题提供另一条线索。谢谢你抽出时间。