flinkSQL1.16.0 动态加载udf包(一)

flinkSQL 1.16.0 动态加载udf包(一)

环境:

  • flink版本:1.16.0
  • flink部署模式:session 模式。在物理机上直接部署flink docker,job和task都是1
  • jdk:1.8

加载类和注册udf

tableEnvironment.executeSql("add JAR  '" + jarPath + "'");

tableEnvironment.executeSql("CREATE FUNCTION " + udfName + " AS '" + classPath + "'");

碰到问题

Caused by: java.lang.ClassCastException: cannot assign instance of 
org.apache.kafka.clients.consumer.OffsetResetStrategy to field org.apache.flink.connector.kafka.source.enumerator.initializer.ReaderHandledOffsetsInitializer.offsetResetStrategy of type
org.apache.kafka.clients.consumer.OffsetResetStrategy in instance of 
org.apache.flink.connector.kafka.source.enumerator.initializer.ReaderHandledOffsetsInitializer

问题解决:

在flink-conf中添加 classloader.resolve-order: parent-first

最主要的就是,需要udf包中不能有多余的依赖, 不然很容易导致依赖冲突.

  • 所以udf打包是都是provided ,依赖统一放入flink/lib下统一管理

如果有错误,欢迎指正、交流 ,谢谢!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值