Быстрое чтение из HBase: пользовательский объект содержит несериализуемое поле
Я пытаюсь прочитать данные из таблицы HBase в среду выполнения Flink.
Ниже приведен пример: https://github.com/apache/flink/blob/master/flink-connectors/flink-hbase/src/test/java/org/apache/flink/addons/hbase/example/HBaseReadExample.java
Я попытался адаптировать пример к моей ситуации, и вот что я сделал:
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 и возвращает ноль, но я не вижу, где можно изменить конфигурации HBase, такие как кворум ZK и т. Д.
Есть идеи?
Спасибо.