我在尝试使用hbase stargate扫描表时遇到了一些主要问题。我的hbase行模式基本上是ObjectedNumber\u languagecode\u date\u randomhash,即。
1_en_2014-12-12_1432ae341
1_en_2014-13-13_234fe321
2_en_2014-01-14_243a43fe
...
342342_uk_2014-01-14_2234af3
我想在表中扫描以ObjectdNumber开头的所有项。我认为问题是objectdnumbers是串行的,并且有不同的位数,但我不完全确定。
使用hbase shell时,我使用的命令是:
scan 'object_articles', { STARTROW => '33_', ENDROW => '34' }
这应该给我每一行以33开始,并在它到达34时停止,结果表明:
hbase(main):012:0> scan 'object_articles', { STARTROW => '33_', ENDROW => '34' }
ROW COLUMN+CELL
33_en_2004_zdfasdf column=cf:articleId, timestamp=1398803544834, value=en_2004_zdfasdf
33_en_2004_zdfasdf column=cf:articleTitle, timestamp=1398803544834, value=Testing
33_en_2004_zdfasdf column=cf:index, timestamp=1398803544834, value=en_2004
1 row(s) in 0.0120 seconds
但是,当我用这个简单的xml设置stargate扫描仪时:
<Scanner startRow="33_" endRow="34" />
它把整张table上的每一行都还给了我。另一个行为是,4位startrow/endrow生成204 no content响应,但任何3位startrow/endrow都会返回整个表。
所有结果:
<Scanner startRow="999_" endRow="1000" />
204无内容:
我很困惑,为什么shell看起来工作得很好,而stargate xml却不是。
1条答案
按热度按时间qybjjes11#
我想是凌晨2点发的,但这真的很简单。我还没完全把脑子放在词典排序上。
自从99年以来,我原来的想法就行不通了。最后,我为startrow添加了一个prefixfilter并去掉了endrow,这样它就只获取以ooid开头的行:
在java中:
以“99”为起点的外观: