我在 Databricks 上的 Spark 中运行我的 jar 文件中的函数时遇到问题。我正在尝试使用一个简单的测试函数来执行此操作,该函数接受一个整数并返回整数 + 5。但是,当我尝试注册测试函数时,出现以下错误:
java.lang.TypeNotPresentException:类型 UDF1 不存在
我正在运行的火花代码是:
import pyspark
from pyspark.sql import SparkSession
from pyspark.sql.types import LongType
from pyspark import SparkContext
spark.udf.registerJavaFunction("numAdd", "com.JavaUDFProj.AddNumber", LongType())
我试图运行的java函数是这样的:
package com.JavaUDFProj;
import org.apache.spark.sql.api.java.UDF1;
public class AddNumber implements UDF1<Long, Long> {
private static final long serialVersionUID = 1L;
@Override
public Long call(Long num) throws Exception {
return (num + 5);
}
}
我怀疑这可能是版本错误,但我不确定要更改什么。我的 Databricks 运行时版本是:
8.3(包括 Apache Spark 3.1.1、Scala 2.12)
我相信我正在用 Java 1.8 编译和导出 Jar。如果有人知道我的集群和 Jar 之间是否存在兼容性错误,或者我注册的 UDF 错误,如果您能帮助我,我将不胜感激。