sbt - flink 使用流 sql 查询上传作业时的问题
问题描述
我使用了最新的 flink 版本(1.10.0)和 sbt(1.3.7)。使用流式 sql 查询上传作业时出现此异常:
原因:java.lang.ClassCastException: org.codehaus.janino.CompilerFactory 不能在 org.codehaus.commons.compiler.CompilerFactoryFactory.getCompilerFactory(CompilerFactoryFactory.java:129) 的 org.codehaus.commons.compiler.CompilerFactory. .codehaus.commons.compiler.CompilerFactoryFactory.getDefaultCompilerFactory(CompilerFactoryFactory.java:79) at org.apache.calcite.rel.metadata.JaninoRelMetadataProvider.compile(JaninoRelMetadataProvider.java:432)
当我使用sbt run运行主类时,它运行良好。我使用sbt 汇编命令制作了 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-client 将使用默认的 child-first resolve-order。如果用户 jar 有一些冲突依赖,就会出现一些问题。
我的问题是:如何解决这些冲突?对于这种情况,有什么程序集合并策略建议吗?帮助将不胜感激。
解决方案
我有同样的问题。也许你已经用 打包了你的代码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>
推荐阅读
- spring-data-jpa - 如何使用 Spring Data Rest 和 queryDSL 在连接表中查询多个值
- python - 无法在 Pyhon 中导入 cppyy
- sql - 使用 wpdb 而不是 wp_query 来改善大型数据库 wp_posts 的网站加载
- azure - 将 kubernetes 导入 terraform 的问题
- java - Elasticsearch MatchQuery 返回错误的结果
- javascript - 尝试将表单数据从 React.js 表单发送到 Flask API,但它不允许提交到 MongoDB
- java - 提高嵌套 for 循环的速度
- c# - Dotnet for Linux:控制台输入光标导航
- azure - 我可以通过标签或选择器而不是名称将 K8s 部署链接到 PVC 吗?
- twitter-bootstrap - 两个引导导航栏需要折叠