scala udf 在 flink sql 客户端中抱怨“java.lang.ClassNotFoundException”
Posted
技术标签:
【中文标题】scala udf 在 flink sql 客户端中抱怨“java.lang.ClassNotFoundException”【英文标题】:scala udf complains"java.lang.ClassNotFoundException"in flink sql client 【发布时间】:2021-01-30 08:05:52 【问题描述】:UDF 的整个 scala 项目在这里:
Flink_SQL_Client_UDF/Scala_fixed/
我注册udf的操作是这样的:
①mvn scala:compile package
②cp table_api-1.0-SNAPSHOT.jar $FLINK_HOME/lib
③add the following sentence into $FLINK_HOME/conf/flink-conf.yaml
flink.execution.jars: $FLINK_HOME/lib/table_api-1.0-SNAPSHOT.jar
④create temporary function scalaupper as 'ScalaUpper';
⑤CREATE TABLE orders (
order_uid BIGINT,
product_name String,
price DECIMAL(32, 2),
order_time TIMESTAMP(3)
) WITH (
'connector' = 'datagen'
);
⑥select scalaupper(product_name) from orders;
然后我得到了
java.lang.ClassNotFoundException: ScalaUpper
需要您的帮助,谢谢!
【问题讨论】:
【参考方案1】:@需要帮助。感谢您重现问题的详细步骤。我想我们可以通过在sql客户端[1]中使用-j命令将jar添加到java类路径中来解决这个问题。在我当地的环境中,它可以工作。但是我在文档 [2] 中没有找到有关“flink.execution.jars”的任何信息。因此,我不确定此选项是否适用于 sql 客户端。
将函数注册到表环境时,函数目录只是做一个简单的验证,并将
[1]https://ci.apache.org/projects/flink/flink-docs-master/dev/table/sqlClient.html#configuration [2]https://ci.apache.org/projects/flink/flink-docs-master/deployment/config.html
【讨论】:
以上是关于scala udf 在 flink sql 客户端中抱怨“java.lang.ClassNotFoundException”的主要内容,如果未能解决你的问题,请参考以下文章
95-910-144-源码-FlinkSQL-Flink的UDF