flink jar包執行報錯 java.lang.NullPointerException at org.json4s.Extraction$.decompose(Extraction.scala:2

健忘主義發表於2020-12-18

情況

本地執行正常 提交後報錯 java.lang.NullPointerException at org.json4s.Extraction$.decompose(Extraction.scala:256)

失敗程式碼

 implicit val formats: AnyRef with Formats = Serialization.formats(NoTypeHints)
 
// input:DataStream[Output]
input.map(x =>{
     
      write(x)
    })
    .addSink(sink)

// case class OutPut(title: String, pid: String, `type`: String, value: String) // oracle返回資料型別中 file_data字串轉json後需要提取的key

成功程式碼

// input:DataStream[Output]
 input.map(x =>{
      implicit val formats: AnyRef with Formats = Serialization.formats(NoTypeHints)
      write(x)
    })
    .addSink(sink)

// case class OutPut(title: String, pid: String, `type`: String, value: String) // oracle返回資料型別中 file_data字串轉json後需要提取的key

總結

程式碼就是一個OutPut scala樣例類的flink datastream資料流 要把scala樣例類轉換為json字串(就是欄位名 欄位值組成的json)

但是 map裡面程式碼是在executor節點執行  外面的實在driver執行.你放在外面導致flink的executor得不到該隱式轉換變數 json4s轉樣例類為json字串錯誤.

 

如有解釋不妥請積極評論 我會及時修正

相關文章