2013-08-06 39 views
0

我可以将3个字符串组合为HBase中的行键吗?例如,X,Y和Z值的组合标识一个唯一的记录。在hbase中使用分隔的rowkey

我会使用Java

能否请你让我知道这是可能被连接到HBase的?

在此先感谢。

回答

0

随着风险变得微不足道,可以将字符串与分隔符连接起来,以产生类似“x | y | z”的内容。

0

您可以使用分隔符,如'|'或用于行键的长度前缀字符串。

你也可以参考OpenTSDB的schema design

0

HBase不会阻止你这样做。虽然你可以使用任何字符作为分隔符,但可以尝试使用不常见的东西,比如“〜”“^”。原因是,字符如“|”“,”很可能作为数据的一部分出现。

一对夫妇的建议,但:

  • 尽量保持rowkey的长度尽可能小。
  • 尝试使用数字键代替字符串(如果可能)。

HTH

附: :获得这些类型查询的答案的最佳方法是尝试它。这应该不会超过几分钟。


您可以使用PrefixFilter来实现。给定一个前缀,在实例化过滤器实例时指定,与此前缀匹配的所有行将返回给客户端。的构造是:

公共PrefixFilter(字节[]前缀)

实施例:

过滤滤波器=新PrefixFilter(Bytes.toBytes( “9874541235 ^移动设备^ MOBILESOURCE”));

这会给你所有以9874541235^MOBILEDEVICE^MOBILESOURCE开头的行。

+0

根据我的要求,我实际上应该使用密钥作为电话号码(10位数字),至少8个字符的代码和8个代码字符的另一个代码。所以我的钥匙就像9874541235^MOBILEDEVICE^MOBILESOURCE。不幸的是,我不得不使用这个组合作为关键字,因为只有这些组合形成一个唯一的关键。请给我建议 – priya

+0

看起来还行:) – Tariq

+0

嗨我有一个问题,使用9874541235^MOBILEDEVICE^MOBILESOURCE作为一个关键。这不是一个独特的价值。 9874541235^MOBILEDEVICE^MOBILESOURCE^VALUE的组合是一个独特的关键。但问题是,当我试图检索信息时,我将只有9874541235^MOBILEDEVICE^MOBILESOURCE作为请求。你有什么建议如何设计相同? – priya