下面是我的java udf代码,
package com.udf;
import org.apache.spark.sql.api.java.UDF1;
public class SparkUDF implements UDF1<String, String> {
@Override
public String call(String arg) throws Exception {
if (validateString(arg))
return arg;
return "INVALID";
}
public static boolean validateString(String arg) {
if (arg == null | arg.length() != 11)
return false;
else
return true;
}
}
我正在使用此类作为 SparkUdf-1.0-SNAPSHOT.jar
我有一个表名作为 hive 中的示例,并希望在 Spark shell 上运行下面的 sql。
> select UDF(name) from sample ;
使用以下命令启动 Spark-Shell。
spark-shell --jars SparkUdf-1.0-SNAPSHOT.jar
谁能告诉我,如何在 Spark shell 上注册 UDF 以便在 Spark sql 中使用它?
最佳答案
经过一番搜索,我得到了答案,
以下是步骤,
spark-shell --jars SparkUdf-1.0-SNAPSHOT.jar
scala> import com.udf.SparkUDF;
scala> import com.udf.SparkUDF;
import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType};
scala> spark.udf.register("myfunc", new SparkUDF(),StringType)
scala> val sql1 = """ select myfunc(name) from sample """
scala> spark.sql(sql1).show();
您将得到结果。
关于java - 如何在spark shell中注册Java Spark UDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54771895/