首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将json提取到case类SCALA FLINK时出错

将json提取到case类SCALA FLINK时出错
EN

Stack Overflow用户
提问于 2017-05-02 06:24:27
回答 1查看 1.1K关注 0票数 1

问题是在进行案例类提取时,映射函数中存在问题。case类不可序列化。我已经隐式地定义了DefaultFormats格式。

代码语言:javascript
代码运行次数:0
运行
复制
package org.apache.flink.quickstart
import java.util.Properties

import com.fasterxml.jackson.databind.{JsonNode, ObjectMapper}
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import org.apache.flink.api.scala._
import org.apache.flink.runtime.state.filesystem.FsStateBackend
import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment}
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer09
import org.apache.flink.streaming.util.serialization.SimpleStringSchema
import org.json4s.DefaultFormats
import org.json4s._
import org.json4s.native.JsonMethods
import scala.util.Try


case class CC(key:String)

object WordCount{
  def main(args: Array[String]) {

    implicit val formats = org.json4s.DefaultFormats

    // kafka properties
    val properties = new Properties()
    properties.setProperty("bootstrap.servers", "***.**.*.***:9093")
    properties.setProperty("zookeeper.connect", "***.**.*.***:2181")
    properties.setProperty("group.id", "afs")
    properties.setProperty("auto.offset.reset", "earliest")
    val env = StreamExecutionEnvironment.getExecutionEnvironment

   val st = env
       .addSource(new FlinkKafkaConsumer09("new", new SimpleStringSchema() , properties))
       .flatMap(raw => JsonMethods.parse(raw).toOption)
//       .map(_.extract[CC])


    val l = st.map(_.extract[CC])

    st.print()
      env.execute()
  }
}

错误:

INFO main -没有检测到org.json4s.JsonAST$JValue类的字段。不能用作PojoType。将作为线程"main“org.apache.flink.api.common.InvalidProgramException:任务中的GenericType异常处理,在org.apache.flink.api.scala.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:172) at org.apache.flink.api.scala.ClosureCleaner$.clean(ClosureCleaner.scala:164) at org.apache.flink.streaming.api.scala.StreamExecutionEnvironment.scalaClean(StreamExecutionEnvironment.scala:666) at org.apache.flink.streaming上不可序列化。.api.scala.DataStream.clean(DataStream.scala:994) at org.apache.flink.streaming.api.scala.DataStream.map(DataStream.scala:519) at org.apache.flink.quickstart.WordCount$.main(WordCount.scala:38) at org.apache.flink.quickstart.WordCount.main(WordCount.scala) at : java.io.NotSerializableException: org.json4s.DefaultFormats$$anon$4 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)在java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)在java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) at org.apache.flink.util.InstantiationUtil.serializeObject(InstantiationUtil.java:317) at org.apache.flink.api.scala.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:170) 6 进程已完成,退出代码为%1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-12 06:36:00

解决办法

代码语言:javascript
代码运行次数:0
运行
复制
implicit val formats = org.json4s.DefaultFormats

外部的主要功能,如

代码语言:javascript
代码运行次数:0
运行
复制
object WordCount{

    implicit val formats = org.json4s.DefaultFormats
    def main(args: Array[String])

或者懒散地初始化格式,比如

代码语言:javascript
代码运行次数:0
运行
复制
implicit lazy val formats = org.json4s.DefaultFormats

在主要功能内部,如

代码语言:javascript
代码运行次数:0
运行
复制
def main(args: Array[String]) {
    implicit lazy val formats = org.json4s.DefaultFormats
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43731397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档