2015-10-20 34 views
0

是否可以序列化ElasticSearch片和甲流elasticsearch沉seralizability

我有类似

stream.addSink(new ElasticsearchSink<>(config, transports, new IndexRequestBuilder<ObjectNode>() { 
      ... 

} 
return eventStream; 

,但它说,ElasticsearchSink在Apache中弗林克是不可序列通过。

+0

'ElasticsearchSink'实现'Serializable'接口。所以,我不明白你的问题。你应该确定,但不是绝对必要的,是给'IndexRequestBuilder'匿名类一个'serialVersionUID'字段。除此之外,我的IDE并不抱怨任何事情。 –

回答

0

我只是有同样的问题,想通了,如果IndexRequestBuilder被定义为一个内部类弗林克的ClosureCleaner.ensureSerializable()方法抛出一个序列化错误:

org.apache.flink.api.common.InvalidProgramException: Object org.ap[email protected]62d24761 not serializable 
... 
Caused by: java.io.NotSerializableException: org.apache.flink.streaming.api.environment.LocalStreamEnvironment 

如果你实现你在自己的类IndexRequestBuilder,一切应该工作:

stream.addSink(new ElasticsearchSink<>(
    config, transports, new MyIndexRequestBuilder<>()));