storm读取增量数据导致触发从头到尾的计算
来源:12-9 -Storm整合Kafka功能开发
慕函数7570418
2019-11-20
我用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才进行运算。。。。。。
1回答
-
1) 首先storm只管处理数据,你进来的数据的时间sqoop过来的 是否还正确? 只要进来的是正确的,那么按照你的思路实现是可以的,但是不确定过的你业务逻辑实现的是否真的是你想要的,所以建议,自己造点数据,debug跑下,你的代码是否是真的按照你的思路实现的对不对
2)正常情况下,只要rowkey设计好,rowkey一般是一个组装的值,是可以做到 把你想要的值直接在hbase中覆盖掉
082019-11-20
相似问题