1. 描述
Flink 中的 -C
选项用于将 URL 添加到作业的类加载器中。URL可以指向本地、HTTP 服务器或 HDFS 等资源的Jar文件。
注意:
- 此处的classpath的url必须是一个能够在client,JM和TM都被访问到的位置。
- 此位置从client端的提交到JM的分发到TM的访问的过程中,不会发生文件移动的动作。
- url支持的协议包括file,ftp,gopher,http,https,jar,mailto,netdoc,亦即java中URL类支持的协议类型。
- 注意:不能放在hdfs上。否则会报错:Bad syntax for classpath: hdfs://xxx。
2. 使用语法
flink run \
-C http://home/user/flink-udf1.jar \
-C http://home/user/flink-udf2.jar \
-j job.jar
配置多个udf: 每个 -C
选项只能对应一个 JAR,不能用逗号 ,
分隔多个路径。
如下示例,
从Taskmanager日志可以看到成功加载https格式的jar包
url路径的结尾可以不以.jar结尾
3. -C
适用的 Flink 运行模式
运行模式 | 是否支持 -C |
---|---|
Standalone(独立模式) | ✅ 支持 |
YARN Session | ✅ 支持 |
YARN Per-job | ✅ 支持 |
Kubernetes | ✅ 支持 |
Local(本地模式) | ✅ 支持 |
4. USING JAR 不可用
使用Flink Sql加载udf
CREATE FUNCTION my_udf AS 'com.example.MyUDF' USING JAR 'hdfs://namenode:9000/flink-udf.jar';
报错:直接不可用。
org.apache.flink.api.common.InvalidProgramException: Table program cannot be compiled. This is a bug. Please file an issue. at