从HBase读取Flink:用户定义的对象包含不可序列化的字段

时间:2018-07-03 15:08:16

标签: java hbase apache-flink

我试图将数据从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,并返回null,但是我看不到可以在哪里更改HBase配置(例如ZK仲裁等)。

有什么想法吗?

谢谢。

0 个答案:

没有答案