注册 Java sparkSQL 用户定义函数
Posted
技术标签:
【中文标题】注册 Java sparkSQL 用户定义函数【英文标题】:Registering a Java sparkSQL User defined function 【发布时间】:2018-05-16 04:00:17 【问题描述】:我编写了一个 Java Spark SQL UDF,如下所示。
import org.apache.spark.sql.api.java.UDF1;
public class LowerCase_UDF implements UDF1<String,String>
@Override
public String call(String t1) throws Exception
String output="";
output=t1.toLowerCase();
return output;
在spark中注册这个函数的流程是什么? 如果我运行 sqlContext.udf.register("LowerCaseUDF", call),它会抛出异常“error: notfound: value call”
我已将生成的 jar 文件添加到 spark-client/lib 文件夹中。但这似乎不起作用。出于某些原因,我们希望该函数使用 Java。对此的任何帮助将不胜感激。谢谢
【问题讨论】:
答案能解决您的问题吗? 另见:Spark (2.3+) Java functions callable from PySpark/Python 【参考方案1】:要使用 Java 在 Spark SQL 中注册 UDF,可以使用以下代码:
sparkSession.udf().register("lowercase_udf", new LowerCase_UDF(), DataTypes.StringType);
然后你可以像这样使用它:
dataset.withColumn("lower", functions.callUDF("lowercase_udf", functions.col("value")));
这会给你这样的输出:
+--------+-------+
|value |lower |
+--------+-------+
|Michael |michael|
|Andy |andy |
|Justin |justin |
+--------+-------+
希望对你有帮助!
【讨论】:
@himanshullTian,你能帮忙解决这个问题吗***.com/questions/55332897/…以上是关于注册 Java sparkSQL 用户定义函数的主要内容,如果未能解决你的问题,请参考以下文章
Spark学习之路 (十九)SparkSQL的自定义函数UDF
Spark学习之路 (十九)SparkSQL的自定义函数UDF[转]
Spark篇---SparkSQL中自定义UDF和UDAF,开窗函数的应用