我试图将数据从HBase表读取到批处理Flink执行环境。
我试图使示例适合我的情况,这就是我所做的:
DataSet<Tuple2<String, String>> testhbaseDataSet=
env.createInput(new TableInputFormat<Tuple2<String, String>>(){
/**
*
*/
private static final long serialVersionUID = -6439507153975964596L;
@Override
public String getTableName() {
return "TEST_TABLE";
}
@Override
protected Scan getScanner() {
Scan scan = new Scan();
scan.addColumn("records".getBytes(), "MDU".getBytes());
return scan;
}
private Tuple2<String, String> reuse = new Tuple2<String, String>();
@Override
protected Tuple2<String, String> mapResultToTuple(Result r) {
String key = Bytes.toString(r.getRow());
String val = Bytes.toString(r.getValue("records".getBytes(),"MDU".getBytes() ));
reuse.setField(key, 0);
reuse.setField(val, 1);
return reuse;
}
});
testhbaseDataSet.print();
但是,当我运行此代码时,出现以下错误:
User-defined object ... contains non-serializable field ...
我唯一能想到的是Flink可能没有连接到HBase,并返回null,但是我看不到可以在哪里更改HBase配置(例如ZK仲裁等)。
有什么想法吗?
谢谢。