spark自定义函数

参考:1. https://spark.apache.org/docs/latest/sql-getting-started.html#untyped-user-defined-aggregate-functions
2.https://spark.apache.org/docs/latest/sql-getting-started.html#type-safe-user-defined-aggregate-functions
3.https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-udfs.html

  1. 通过spark sql使用–适合于当前行的简单操作
val dataset = Seq((0, "hello"), (1, "world")).toDF("id", "text")
dataset.createOrReplaceTempView("test")
spark.udf.register("myUpper", (input: String) => input.toUpperCase)
spark.sql("select id,text,myUpper(text) from test")

结果如下:

idtextupper
0helloHELLO
1worldWORLD
  1. 通过withColumn使用–适合于当前行的简单操作
val upper: String => String = _.toUpperCase
import org.apache.spark.sql.functions.udf
val upperUDF = udf(upper)
dataset.withColumn("upper", upperUDF('text)).show

结果如下

idtextupper
0helloHELLO
1worldWORLD
  1. 继承UserDefinedAggregateFunction–DataFrame的聚合函数,适合于有聚合操作时使用
  2. 继承Aggregator–类型安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值