Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-6173

flink-table not pack-in com.fasterxml.jackson.* in after #FLINK-5414

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • None
    • 1.3.4, 1.4.0
    • Table SQL / API
    • None

    Description

      Currently, flink-table will pack-in com.fasterxml.jackson.* and rename them to org.apache.flink.shaded.calcite.com.fasterxml.jackson.*
      If a project depends on flink-table, and uses fasterxml as follows(function explain uses fasterxml indirectly):

      WordCount.scala
      object WordCountWithTable {
      
        def main(args: Array[String]): Unit = {
          // set up execution environment
          val env = ExecutionEnvironment.getExecutionEnvironment
          val tEnv = TableEnvironment.getTableEnvironment(env)
      
          val input = env.fromElements(WC("hello", 1), WC("hello", 1), WC("ciao", 1))
          val expr = input.toTable(tEnv)
          val result = expr
            .groupBy('word)
            .select('word, 'frequency.sum as 'frequency)
            .filter('frequency === 2)
      
          println(tEnv.explain(result))
      
          result.toDataSet[WC].print()
        }
      
        case class WC(word: String, frequency: Long)
      
      }
      

      It actually uses org.apache.flink.shaded.calcite.com.fasterxml.jackson.*

      I found after FLINK-5414, flink-table didn't pack-in com.fasterxml.jackson.* and the project would throw class not found exception.

      Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/shaded/calcite/com/fasterxml/jackson/databind/ObjectMapper
      	at org.apache.flink.table.explain.PlanJsonParser.getSqlExecutionPlan(PlanJsonParser.java:32)
      	at org.apache.flink.table.api.BatchTableEnvironment.explain(BatchTableEnvironment.scala:143)
      	at org.apache.flink.table.api.BatchTableEnvironment.explain(BatchTableEnvironment.scala:164)
      	at org.apache.flink.quickstart.WordCountWithTable$.main(WordCountWithTable.scala:34)
      	at org.apache.flink.quickstart.WordCountWithTable.main(WordCountWithTable.scala)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
      Caused by: java.lang.ClassNotFoundException: org.apache.flink.shaded.calcite.com.fasterxml.jackson.databind.ObjectMapper
      	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      	... 10 more
      

      Attachments

        Activity

          People

            twalthr Timo Walther
            docete Zhenghua Gao
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: