2017-06-15 63 views
0

我已经创建了一个phbase表与凤凰SQL创建表查询,还指定salt_buckets。如预期的那样,Salting为rowkey添加前缀。阅读hbase表中盐与phoenix在配置单元hbase serde

我已经创建了一个外部蜂巢表映射到这个HBase的表HBase的SERDE问题是,当我通过rowkey过滤查询该表:

其中key =“值”

它不”因为我认为salt pre-fix也会被拿到钥匙上。这限制了对密钥上的数据进行过滤的能力。选项:

“,其中rowkey像‘百分比值’

的作品,但它需要很长的时间,可能不会对整个表扫描

我的问题是如何有效地查询这个表上排在蜂房键值(去掉盐预修复)?

回答

0

是的,你是正确的,同时提

这是行不通的,因为我觉得前盐修复也越来越牵强的关键。 '

缓解的一种方法是使用散列而不是随机前缀。 和前缀与计算出的哈希 的rowkey使用这种技术,你可以计算哈希值要扫描:

MOD(散列(rowkey),n),其中n是区域的数量将rowkey删除热点问题

使用随机前缀会引起您在问题中提到的问题。

选项:。 “哪里像rowkey‘百分比值’ 的作品,但它需要很长的时间,可能不会对整个表扫描

这正是随机前缀腌制做的HBase被强制扫描整个表以获得所需的值,所以如果你可以用你计算的散列值作为你的rowkey的前缀,它会更好 但是这个哈希技术在范围扫描中不会被证明是好的

现在你可能会问,为什么不能简单地用我的rowKey替换它的散列并将rowkey存储为单独的列。 它可能无法正常工作,但我建议以这种方式实现它,因为HBase在列族中已经非常敏感。 但是,我不清楚这个解决方案。

您也可以阅读this以获取更详细的解释。