请帮助我了解在HBase中存储信息的最佳方法。 基本上,我有一个像hashed_uid + date + session_id这样的rowkey,其中包含持续时间,日期,时间,位置,深度等指标。 我读了很多材料,我有点困惑。为了获得更好的性能,人们建议减少列族,因此我面临三种选择:
让每个指标都排在一行,如rowkey_key cf1->alias1:value
有许多列,例如rowkey cf1->key1:val1, cf1->key2:val2 ...
将所有键值对编码为一个大字符串,如rowkey cf1->"k1:v1,k2:v2,k3:v3..."
提前谢谢你。我不知道选哪个。我的HBase设计的目标是为用户分析输出的增量窗口函数做准备,例如过去60天的百分位数,参与度和统计摘要。最有可能的是,我将使用配置单元。
答案 0 :(得分:2)
您可能会对列族和列的命名相似性感到困惑。这些概念在HBase中是不同的。列族由几列组成。当您只需要读取某些类型的列时,此设计旨在提高对数据的访问速度。例如,您有原始数据和处理过的数据。如果处理过的数据存储在单独的列族中,则不会涉及原始数据。您可以部分地为每行键设置任意数量的列;它应该存储在一个区域,不超过10GB。设计取决于你的用途: