开发者社区> 问答> 正文

flink使用fastjson在flatmap中解析Json,在idea中正常,但生产环境失败。

./bin/flink run -p2 -c com.ydx.streaming.StreamingGoodsDetailJob /opt/module/flink-1.11.2/examples/batch/StreamingRecommender-1.0-SNAPSHOT.jar

源码

class GoodsDetailPageFlatMapFunction extends FlatMapFunction[String, GoodsDetailPage] {
override def flatMap(t: String, collector: Collector[GoodsDetailPage]): Unit = {
if (t.nonEmpty){
  if(t.contains("\"page\":")) {
    val pageObj = JSON.parseObject(JSON.parseObject(t).getString("page"))
    if(pageObj.getString("page_id") == "good_detail"){
      if(pageObj.getString("item").nonEmpty){
        val jsonOBJ :JSONObject  = JSON.parseObject(t)
        val comObj = JSON.parseObject(jsonOBJ.getString("common"))
        if(comObj.getString("uid").nonEmpty){
          collector.collect(
            GoodsDetailPage(
              uid = comObj.getString("uid"),
              item_type = pageObj.getString("item_type"),
              item = pageObj.getString("item"),
              during_time = pageObj.getString("during_time").toInt,
              ts = jsonOBJ.getString("ts").toLong,
              time_server = jsonOBJ.getString("server_time").toLong,
              first_time = jsonOBJ.getString("server_time").toLong,
              reason = "得分:" + 0
            )
          )
        }

      }
    }
  }
}
}
}

生产报错信息如下:

  • Caused by: java.lang.ClassNotFoundException: com.alibaba.fastjson.JSON (val pageObj = JSON.parseObject(JSON.parseObject(t).getString("page"))) idea中正常,但生产环境中就报错

展开
收起
我有一个梦想 2020-11-23 09:26:44 2387 0
1 条回答
写回答
取消 提交回答
    • 要是不在算子里面使用fastjson是正常的,除非使用scala原生解析json,否则在转换算子中生产环境就找不到类。但算子外使用都是正常的。
    2020-11-23 09:30:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
蚂蚁金服高级开发工程师萧恺:IDEA 插件开发入门教程 立即下载