请帮助我了解在hbase中存储信息的最佳方式。基本上,我有一个行键,比如hashed\uuid+date+session\uid,其中包含持续时间、日期、时间、位置、深度等度量。我读了很多有点困惑的材料。人们建议减少列族以获得更好的性能,因此我面临三种选择:
让每个指标像这样排成一行 rowkey_key cf1->alias1:value
有许多列,如 rowkey cf1->key1:val1, cf1->key2:val2 ...
将所有的键值对编码成一个大字符串,如 rowkey cf1->"k1:v1,k2:v2,k3:v3..."
先谢谢你。我不知道该选哪一个。我的hbase设计的目标是为用户分析输出的增量窗口功能做准备,比如百分位数、参与度和过去60天的统计摘要。很有可能,我会用Hive。
1条答案
按热度按时间mzsu5hc01#
柱族和柱命名的相似性可能会使您感到困惑。这些概念在hbase中是不同的。柱族由多个柱组成。这种设计是为了在只需要读取某些类型的列时提高数据的访问速度。e、 例如,你有原始数据和处理过的数据。如果处理后的数据存储在单独的列族中,则读取这些数据不会涉及原始数据。您可以选择每行键有任意数量的列;它应该存储在一个区域,不超过10gb。设计取决于您的需求:
当您需要在每一行键上存储大量数据时,第一个变体没有替代方案,这些数据不能存储在区域中。超过10gb。
第二是好的,当你只需要得到一些指标,每一个
每行单读键。
最后一种变体适用于
始终获取每行键每次读取的所有度量。