分享

hbase 增量读取数据

zstu 2018-9-30 10:55:53 发表于 疑问解答 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 10169
现在的rowkey现在是一个10位的随机数,我们想要根据rowkey进行增量的数据hbase中数据,所以在rowkey前添加时间戳,然后每次读的时候,设置startRow,但这样会有热点问题,问问各路大神有什么方法。

已有(6)人评论

跳转到指定楼层
s060403072 发表于 2018-9-30 17:28:14
这样做有点颠倒了,把随机数放到前面,把时间戳放到后面,这样没有热点问题。
至于查询可以使用rowfilter试试
回复

使用道具 举报

zstu 发表于 2018-10-8 16:58:02
s060403072 发表于 2018-9-30 17:28
这样做有点颠倒了,把随机数放到前面,把时间戳放到后面,这样没有热点问题。
至于查询可以使用rowfilter ...

使用rowfilter好像不可以进行范围查找,比如说想查询2018-10-08 09:20:20 到 2018-10-08 14:25:56之间的数据。
回复

使用道具 举报

bioger_hit 发表于 2018-10-8 17:04:17
zstu 发表于 2018-10-8 16:58
使用rowfilter好像不可以进行范围查找,比如说想查询2018-10-08 09:20:20 到 2018-10-08 14:25:56之间的 ...

可以的组合使用

回复

使用道具 举报

zstu 发表于 2018-10-9 09:43:32

可以详细的说一下吗
回复

使用道具 举报

bioger_hit 发表于 2018-10-9 10:31:10
本帖最后由 bioger_hit 于 2018-10-9 10:32 编辑
zstu 发表于 2018-10-9 09:43
可以详细的说一下吗




RowFilter是用来对rowkey进行过滤的,比较符如下:

Operator
Description
LESS
小于
LESS_OR_EQUAL
小于等于
EQUAL
等于
NOT_EQUAL
不等于
GREATER_OR_EQUAL
大于等于
GREATER
大于
NO_OP
排除所有

首先会用上面运算符,然后同一个字段首先大于某个数字
然后在定义小于某个数字。
这样组合就是一个范围了,分别定义。hbase能识别的。

比如下面:
  HTable table = new HTable(configuration, tablename);

            Filter filter1 = new RowFilter(CompareFilter.CompareOp.GREATER,
                    new BinaryComparator(Bytes.toBytes(rowkeyvalue)));
            // EQUAL =

            Scan s = new Scan();
            s.setFilter(filter1);
添加完filter1,然后在添加个filter2




回复

使用道具 举报

zstu 发表于 2018-10-10 10:56:16
bioger_hit 发表于 2018-10-9 10:31
RowFilter是用来对rowkey进行过滤的,比较符如下:

使用rowfilter的rowvalue是一个具体的值吧,如果rowkey是uuid(随机数)+timestamp,那这rowvalue就不好定
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条