当我运行以下代码时:
public SourceFunction<ObjectNode> get() {
return new FlinkKafkaConsumer<>(topic,
new AbstractDeserializationSchema<ObjectNode>() {
@Override
public ObjectNode deserialize(byte[] message) throws IOException {
ObjectReader objectReader =
new ObjectMapper()
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.readerFor(JsonNode.class)
.withFormatDetection(
new ObjectMapper().readerFor(com.fasterxml.jackson.databind.JsonNode.class),
new ObjectMapper(new SmileFactory()).readerFor(JsonNode.class));
return objectReader.readValue(message);
}
},
properties);
// return new FlinkKafkaConsumer<>(topic,
// new JSONKeyValueDeserializationSchema(false),
// properties);
}
我遇到以下错误:
org.apache.flink.api.common.InvalidProgramException: The implementation of the FlinkKafkaConsumerBase is not serializable. The object probably contains or references non serializable fields
.
以上所有都是杰克逊类,除了返回类型ObjectNode来自flink包。
如何在Flink的源kafka连接器中解析来自Kafka的json微笑?