【问题标题】:scala udf complains"java.lang.ClassNotFoundException"in flink sql clientscala udf 在 flink sql 客户端中抱怨“java.lang.ClassNotFoundException”
【发布时间】: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

需要您的帮助,谢谢!

【问题讨论】:

    标签: apache-flink


    【解决方案1】:

    @需要帮助。感谢您重现问题的详细步骤。我想我们可以通过在sql客户端[1]中使用-j命令将jar添加到java类路径中来解决这个问题。在我当地的环境中,它可以工作。但是我在文档 [2] 中没有找到有关“flink.execution.jars”的任何信息。因此,我不确定此选项是否适用于 sql 客户端。

    将函数注册到表环境时,函数目录只是做一个简单的验证,并将添加到map中。它不会将类加载到运行时。只有当作业调用函数时,函数目录才会将类加载到运行时中。

    [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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 2010-12-18
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多