hbase设计concat长键值对与许多列

时间:2017-04-10 18:29:05

标签: hadoop hive hbase

请帮助我了解在HBase中存储信息的最佳方法。 基本上,我有一个像hashed_uid + date + session_id这样的rowkey,其中包含持续时间,日期,时间,位置,深度等指标。 我读了很多材料,我有点困惑。为了获得更好的性能,人们建议减少列族,因此我面临三种选择:

  1. 让每个指标都排在一行,如rowkey_key cf1->alias1:value

  2. 有许多列,例如rowkey cf1->key1:val1, cf1->key2:val2 ...

  3. 将所有键值对编码为一个大字符串,如rowkey cf1->"k1:v1,k2:v2,k3:v3..."

  4. 提前谢谢你。我不知道选哪个。我的HBase设计的目标是为用户分析输出的增量窗口函数做准备,例如过去60天的百分位数,参与度和统计摘要。最有可能的是,我将使用配置单元。

1 个答案:

答案 0 :(得分:2)

您可能会对列族和列的命名相似性感到困惑。这些概念在HBase中是不同的。列族由几列组成。当您只需要读取某些类型的列时,此设计旨在提高对数据的访问速度。例如,您有原始数据和处理过的数据。如果处理过的数据存储在单独的列族中,则不会涉及原始数据。您可以部分地为每行键设置任意数量的列;它应该存储在一个区域,不超过10GB。设计取决于你的用途:

  • 当你需要存储很多时,第一个变种没有其他选择 每个单行密钥的数据,不能存储在某个区域中。多于 10GB。
  • 当你需要每个只需要几个指标时,第二个是好的 单行读取每行键。
  • 最后一个变体适用于你 总是得到每行每个读取密钥的所有指标。