以下是我的水槽Sink代码,用于在Hbase中拆分事件和存储,它在获取null事件时给出错误
public class MyHbaseEventSerializer implements HbaseEventSerializer {
@Override
public void configure(Context context){}
@Override
public void initialize(Event event, byte[] columnFamily) {
this.payload = event.getBody();
this.cf = columnFamily;
this.e = event;
}
@Override
public List<Row> getActions() throws FlumeException {
List<Row> actions = Lists.newArrayList();
try{
// here splitting event and store in Hbase.
}catch(Exception e){
throw new FlumeException("Could not get row key!", e);
}
return actions
}
@Override
public List<Increment> getIncrements() {
List<Increment> incs = new LinkedList<Increment>();
}
@Override
public void close() {}
}
这个错误连续无限 错误:[SinkRunner-PollingRunner-DefaultSinkProcessor](org.apache.flume.SinkRunner $ PollingRunner.run:160) - 无法发送事件。以下是例外情况。 java.lang.IllegalStateException:当事务处于打开状态时调用begin()! 在org.apache.flume.channel.BasicTransactionSemantics.begin(BasicTransactionSemantics.java:131) 在org.apache.flume.sink.hbase.HBaseSink.process(HBaseSink.java:234) 在org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68) 在org.apache.flume.SinkRunner $ PollingRunner.run(SinkRunner.java:147) 在java.lang.Thread.run(Thread.java:724)
有任何解决方案
提前致谢..