UDF----------------------------------------
完整的示例:object SparkSQL {
------------------------
def main(args:Array[String]):Unit = {
//创建SparkConf()并设置App名称
val conf = new SparkConf().setAppName("SparkSQLDemo").setMaster("local")
val spark = SparkSession.builder().config(conf).getOrCreate()
val df: DataFrame = spark.read.json("dir/people.json")
//注册函数,在整个应用中可以使用
val addName = spark.udf.register("addName", (x: String) => "Name:" + x)
df.createOrReplaceTempView("people")
spark.sql("Select addName(name), age from people").show()
spark.stop()
}
}
/**
* 自定义UDF函数
* 传入一个json形式的字符串,获取指定字段,返回改字段的值
*/
public class GetJsonObjectUDF implements UDF2<String,String,String> {
private static final long serialVersionUID = 6776121915573178083L;
@Override
public String call(String json, String field) throws Exception {
//fastjson自带的方法
try {
JSONObject jsonObject = JSONObject.parseObject(json);
return jsonObject.getString(field);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
---

本文主要探讨SparkSQL中的用户自定义函数(UDF、UDAF、UDTF)。UDTF(User Defined Table Generating Functions)允许从单行输入生成多行输出,类似于Hive的UDTF。通过示例展示了如何创建一个UDTF,该UDTF接收一个字符串,将其拆分为单个字符,并为每个字符生成一行,每行包含一个字符的数组。
最低0.47元/天 解锁文章
796

被折叠的 条评论
为什么被折叠?



