如何将Flink Source [Data Stream]字符串值转换为Map?

时间:2018-12-17 09:24:37

标签: json scala apache-flink flink-streaming data-stream

尝试使用 scala 将Apache Flink源字符串转换为Map。

我的源流字符串:key1 = value1key2 = 2000-12-17 00:00:00key3 = Testkey4 = 08.89198key5 = 103.000

代码:

val environment = StreamExecutionEnvironment.getExecutionEnvironment
val out  = environment.addSource(...)
val mapper = new ObjectMapper()
val texToMap = out.map(mapper.readValue(_,classOf[Map[Object,Object]])
println(textToJson)

其抛出错误,如

org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonParseException:无法识别的令牌'key1':正在等待('true','false'或'null')

由于我是flink实现的新手,因此有什么方法可以将 String 值转换为 Map

1 个答案:

答案 0 :(得分:0)

Apache Flink将Jackson阴影罐子用于某些特殊用途。对于您的情况,您需要导入com.fasterxml.jackson.databind.ObjectMapper而不是Flink的阴影jackson依赖项。
同时,您需要此功能,因为您正在使用Scala。

import com.fasterxml.jackson.module.scala.DefaultScalaModule
val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)