scala - 将用 SCALA 编写的 Spark UDF 转换为 JAVA
问题描述
下面是我的 spark UD,有人可以帮我把它转换成 java 吗?
val customUDF = udf((array: Seq[String]) => {
val newts = array.filter(_.nonEmpty)
if (newts.size == 0) null
else newts.head
})
解决方案
你可以通过两种方式做到这一点
- 内联使用 Lambda 即 Scala 风格
- 或者你可以定义一个方法并注册它。
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.api.java.UDF0;
import org.apache.spark.sql.api.java.UDF1;
import org.apache.spark.sql.types.DataTypes;
import java.util.List;
public class SimpleUDF {
public static void main(String[] args) {
SparkSession spark = SparkSession.builder().master("local[*]").getOrCreate();
spark.sqlContext()
.udf()
.register("sampleUDFLambda", (List<String> array) -> array.stream().filter(element ->
!element.isEmpty()).findFirst().orElse(null), DataTypes.StringType);
}
//Or you can define a function
private UDF1< List<String>,String> sampleUdf()
{
return ( array ) -> array.stream().filter(element ->
!element.isEmpty()).findFirst().orElse(null);
}
}
推荐阅读
- mysql - 添加自定义自动增量值
- c - cs50 pset1 cash.c 预期表达式
- python - 如何使用 Keras 实现 CNN-LSTM
- python - Python if 语句结果未打印
- r - dplyr mutate_at 并一起重命名
- python - 如何显示配置文件中的值
- python - GST_ELEMENT_FACTORY gstelementfactory.c:467:gst_element_factory_make:没有这样的元素工厂“voaacenc”
- c# - 如何在 .NET Framework Web 应用程序中为 Web Api 进行自定义模型绑定?
- cakephp-3.x - 片段缓存 cakephp 4
- http - 如何知道使用哪个端口从 Postman 发出 http Get 请求