使用Flink从Kafka解析json格式的字符串

时间:2017-08-07 07:01:34

标签: apache-flink flink-streaming

我想要做的是读取json格式的字符串,例如

{"a":1, "b":2}

使用flink然后通过其密钥提取特定值,例如1。

请参阅此处:https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/connectors/kafka.html

我所做的是:

val params = ParameterTool.fromArgs(args)
val env = StreamExecutionEnvironment.getExecutionEnvironment

val kafkaConsumer = new FlinkKafkaConsumer010(
  params.getRequired("input-topic"),
  new JSONKeyValueDeserializationSchema(false),
  params.getProperties
)

val messageStream = env.addSource(kafkaConsumer)

但我不太确定如何向前迈进。在上面的链接中,它说我可以使用objectNode.get(“field”).as(Int/String/…)()按键提取特定值,但我想知道我该怎么做?

或者可以采用完全不同的方式实现我的目标?

谢谢!

1 个答案:

答案 0 :(得分:1)

对Kafka的数据应用数据转换,如下所示:

messageStream.map(new MapFunction<ObjectNode, Object>() {
    @Override
    public Object map(ObjectNode value) throws Exception {
        value.get("field").as(...)
    }
})