文章目录
自定义函数分类
类似于hive当中的自定义函数, spark同样可以使用自定义函数来实现新的功能。
spark中的自定义函数有如下3类
- 1.UDF(User-Defined-Function)
输入一行,输出一行 - 2.UDAF(User-Defined Aggregation Funcation)
输入多行,输出一行 - 3.UDTF(User-Defined Table-Generating Functions)
输入一行,输出多行
自定义UDF
需求
有udf.txt数据格式如下:
Hello abc study small
通过自定义UDF函数将每一行数据转换成大写
select value,smallToBig(value) from t_word
代码演示
import org.apache.spark.SparkContext
import org.apache.spark.sql.{
Dataset, SparkSession}
object UDFDemo {
def main(args: Array[String]): Unit = {
//1.创建SparkSession
val spark: SparkSession = SparkSession.builder().master("local[*]").appName("SparkSQL").getOrCreate()
//2创建sc
val sc: SparkContext = spark.sparkContext
//sc.setLogLevel("WARN")
//3.读取文件
val fileDS: Dataset[String] = spark.read.textFile("D:\\data\\udf.txt")
fileDS.show()
/*
+----------+
| value|
+----------+
|helloworld|
| abc|
| study|
| smallWORD|
+----------+
*/
/*
将每一行数据转换成大写
select value,smallToBig(value) from t_word
*/
//注册一个函数名称为smallToBig,功能是传入一个String,返回一个大写的String
spark.udf.register("smallToBig",(str:String) => {
根据业务逻辑对数据进行处理
str.toUpperCase()
//str.length*10/2/2.toDouble