hi jark wu、 将解析错误数据直接打到日志里确实是比较通用的解决方案; 我现在使用flink sql对接kafka json数据的时候,发现对json数据的解析有一些局限性,即比如我有一条数据是jsonobject,但是我在定义flink sql connector数据类型的时候如果直接定义为string,会导致数据解析失败(当然,这个失败是正常的) 但是这会有一个局限性就是我没办法以一个string方式获取一个jsonobject数据(由于一些比较尴尬的原因就想以string方式获取jsonobject数据),查看代码发现这是jackson导致的获取失败,这个社区考虑兼容一下吗?
if (simpleTypeInfo == Types.STRING) { return Optional.of((mapper, jsonNode) -> jsonNode.asText());// 这里会返回空,改成下面样子兼容一下 if (simpleTypeInfo == Types.STRING) { return Optional.of((mapper, jsonNode) -> jsonNode.isTextual()?jsonNode.asText():jsonNode.toString()); Jark Wu <imj...@gmail.com> 于2020年7月21日周二 下午10:30写道: > 目前是不支持的。这个需求有点太业务特定了。flink 不可能为了一个错误日志去抽象、对接各种存储系统。 > 一种方案是社区可以考虑支持下打印到日志里,然后用户可以通过自定义插件 log appender 写入外部存储。 > > Best, > Jark > > On Tue, 21 Jul 2020 at 18:53, Dream-底限 <zhan...@akulaku.com> wrote: > > > hi > > json.ignore-parse-errors那只配置这个就好了, 其实我想把解析失败的数据存储到外部系统,而不是直接丢弃 > > > > Leonard Xu <xbjt...@gmail.com> 于2020年7月21日周二 下午4:18写道: > > > > > Hi, > > > 我理解应该做不到,因为这两个format参数在format里就做的。 > > > json.ignore-parse-errors 是在 > > > format解析时跳过解析失败的数据继续解析下一行,json.fail-on-missing-field > > > 是标记如果字段少时是否失败还是继续(缺少的字段用null补上) > > > 这两个不能同时为ture,语义上就是互斥的。 > > > > > > Best > > > Leonard Xu > > > > 在 2020年7月21日,16:08,Dream-底限 <zhan...@akulaku.com> 写道: > > > > > > > > > > > > > > json数据,在创建表的时候发现json数据解析的时候有下面两项,这两项如果开启那么解析失败的数据是会被丢掉吗,有没有方式可以把解析失败的数据打到外部存储 > > > > > > > > >