2017-04-10 119 views
1

请帮我理解在HBase中存储信息的最佳方式。 基本上,我有一个rowkey,如hashed_uid + date + session_id,其中包含持续时间,日期,时间,位置,深度等指标。 我读了很多材料,我有点困惑。人建议少列家人有更好的表现,所以我面临的三个选项中进行选择:hbase设计concat长键值对vs多列

  1. 让每个指标在一排坐在像rowkey_key cf1->alias1:value

  2. 有很多列像rowkey cf1->key1:val1, cf1->key2:val2 ...

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

预先感谢您。我不知道该选哪个。我的HBase设计的目标是为用户分析输出的增量窗口函数做准备,如过去60天的百分位数,参与度和统计摘要。很可能,我会为此使用配置单元。

+0

我首先会问你为什么要使用hbase。 – Andrew

+0

@Andrew是的,我目前的进程是在HDFS中,而且容量太大,无法处理。其次,我只发现HBASE可用于更好的增量计算和快照。 – Tadelicious

回答

2

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

  • 第一个变种有没有办法。超过 10GB。
  • 其次,当您需要获取每个
    单行读取关键字只有几个指标时,情况良好。
  • 最后一个变体适用于您总是获得每个单个读取每行密钥的所有度量标准。