我用storm读取hbase数据,为使其达到增量读取进行实时计算,在取数据的时候将获得到的hbase行键(升序时间戳)赋值给static变量times。
static String times = “” ;
同时在从hbase取数据之前建立行键过滤器
Filter filter1 = new RowFilter(CompareFilter.CompareOp.GREATER,
new BinaryComparator(Bytes.toBytes(times)));
当数据读取完之后,times按道理来讲是行键中最大的值了。
times =new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss.0”).format(InsertTimeToHis);
InsertTimeToHis是行键值
当数据源hbase数据发生改变时,我的想法是从hbase拿到的行键去和times比较,大于它的才会触发任务进行计算。
实际情况中,我hbase数据源的增量导入sqoop脚本一运行,storm就不管times和行键的大小,从等待任务中运行,将数据全部重新计算。这个问题请问如何解决?实现行键大于times才进行运算。。。。。。
登录后可查看更多问答,登录/注册