FlinkSQL依赖问题
1. 背景
在FlinkSQL任务提交时./bin/flink run -c com.stream.PhotoResult ./flinksqldemo-1.0-SNAPSHOT-jar-with-dependencies.jar
,报错如下:
Caused by: java.lang.ClassCastException: org.codehaus.janino.CompilerFactory cannot be cast to org.codehaus.commons.compiler.ICompilerFactory
2. 解决
尝试将flink-table-planner-blink_${scala.binary.version}
jar包放入./lib下,依然报错。最后修改配置后解决。
# 修改 ./conf/flink-conf.yaml
classloader.resolve-order: parent-first
官网介绍如下:
Defines the class resolution strategy when loading classes from user code, meaning whether to first check the user code jar ("child-first") or the application classpath ("parent-first"). The default settings indicate to load classes first from the user code jar, which means that user code jars can include and load different dependencies than Flink uses (transitively).
定义从用户代码加载类时的类解析策略,即是先检查用户代码 jar(“child-first”)还是应用程序类路径(“parent-first”)。 默认设置指示首先从用户代码 jar 加载类,这意味着用户代码 jar 可以包含和加载与 Flink 使用的不同的依赖项(传递)。
3. 引用
org.codehaus.janino.CompilerFactory
官网配置介绍