Java HbaseSink水槽异常
下面是我的flume接收器代码,用于拆分事件并将其存储在Hbase中,当它接受空事件时,它会给我错误Java HbaseSink水槽异常,java,hbase,flume,Java,Hbase,Flume,下面是我的flume接收器代码,用于拆分事件并将其存储在Hbase中,当它接受空事件时,它会给我错误 public class MyHbaseEventSerializer implements HbaseEventSerializer { @Override public void configure(Context context){} @Override public void initialize(Event event, byte[]
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() {}
}
公共类MyHbaseEventSerializer实现HbaseEventSerializer{
@凌驾
公共void配置(上下文){}
@凌驾
公共void初始化(事件事件,字节[]列族){
this.payload=event.getBody();
this.cf=columnFamily;
e=事件;
}
@凌驾
public List getActions()抛出FlumeException{
List actions=Lists.newArrayList();
试一试{
//这里是拆分事件并存储在Hbase中。
}捕获(例外e){
抛出新的FlumeException(“无法获取行键!”,e);
}
返回操作
}
@凌驾
公共列表{
List incs=new LinkedList();
}
@凌驾
公共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)
运行(Thread.java:724)
有没有解决这个问题的方法
提前谢谢