flink使用stream sql查询上载作业时出现的问题

svdrlsy4  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(421)

我使用了最新的flink版本(1.10.0)和sbt(1.3.7)。上载带有流式sql查询的作业时出现此异常:
原因:java.lang.classcastexception:org.codehaus.janino.compilerfactory无法转换到org.codehaus.commons.compiler.icompilerfactory的org.codehaus.commons.compiler.compilerfactory.getcompilerfactory(compilerfactoryfactory)。java:129)在org.codehaus.commons.compiler.compilerFactory.getdefaultcompilerfactory(编译器工厂)。java:79)在org.apache.calcite.rel.metadata.janinorelmetadataprovider.compile(janinorelmetadataprovider。java:432)
当我用sbt run运行主类时,它运行得非常好。我用sbt assembly命令创建jar,库之间有冲突。因此,请在build.sbt中添加以下内容:

assemblyMergeStrategy in assembly := {
     case PathList("META-INF", xs @ _*) => MergeStrategy.discard
     case x => MergeStrategy.first
    }

我读过一个类似的Hive连接器案例https://issues.apache.org/jira/browse/flink-14849 答案是:
之后https://issues.apache.org/jira/browse/flink-13749 ,flink客户端将使用默认的子级优先解析顺序。如果用户jar有一些冲突依赖项,则会出现一些问题。
我的问题是:如何解决这些冲突?对于这种情况,有什么程序集合并策略建议吗?我们将不胜感激。

czq61nw1

czq61nw11#

我也有同样的问题。也许你已经把你的代码打包了 flink-table-planner_${scala.binary.version} ,因此需要使用以下设置更改maven配置:

<dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-table-planner_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-table-planner-blink_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-table-planner_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
        <scope>provided</scope>
    </dependency>

相关问题