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回答

Michael_PK

2019-11-20

1) 首先storm只管处理数据,你进来的数据的时间sqoop过来的 是否还正确? 只要进来的是正确的,那么按照你的思路实现是可以的,但是不确定过的你业务逻辑实现的是否真的是你想要的,所以建议,自己造点数据,debug跑下,你的代码是否是真的按照你的思路实现的对不对

2)正常情况下,只要rowkey设计好,rowkey一般是一个组装的值,是可以做到 把你想要的值直接在hbase中覆盖掉


0
8
Michael_PK
回复
慕函数7570418
这代码很难看得出所以然呢,得一步步debug才行
2019-11-20
共8条回复

Java大数据实战,巧用Storm快速切入实时流处理领域

深入Storm内部机制,logstash+kafka,快速切入大数据实时流处理

518 学习 · 143 问题

查看课程