1.自定義函式分類
類似於hive當中的自定義函式, spark同樣可以使用自定義函式來實現新的功能。
spark中的自定義函式有如下3類
1.udf(user-defined-function)
輸入一行,輸出一行
2.udaf(user-defined aggregation funcation)
輸入多行,輸出一行
3.udtf(user-defined table-generating functions)
輸入一行,輸出多行
2、 自定義udf
需求有udf.txt資料格式如下:
hello通過自定義udf函式將每一行資料轉換成大寫abcstudy
small
select value,smalltobig(value) from t_word
**演示:
3、自定義udaf[了解]
需求:有udaf.json資料內容如下
求取平均工資
●繼承userdefinedaggregatefunction方法重寫說明
inputschema:輸入資料的型別
bufferschema:產生中間結果的資料型別
datatype:最終返回的結果型別
deterministic:確保一致性,一般用true
initialize:指定初始值
update:每有一條資料參與運算就更新一下中間結果(update相當於在每乙個分割槽中的運算)
merge:全域性聚合(將每個分割槽的結果進行聚合)
evaluate:計算最終的結果
●**演示:
object udaf//中間結果快取的型別
override def bufferschema: structtype =
//資料返回的型別
override def datatype: datatype =
//是否有相同的輸出 true
override def deterministic: boolean =
/*list(1,2,3,4,5).reduce((a,b)=>a+b)
1 a=1 b=2
2 a=3 b=3
3 a=6 b=4
4 a=10 b=5
5 a=51
///資料的初始化
override def initialize(buffer: mutableaggregationbuffer): unit =
//rdd是分割槽的 此方法是計算乙個分區內的資料和 和資料數量
/
Spark SQL中自定義函式詳解
資料來源 初始化sparksession package com.kfk.spark.common import org.apache.spark.sql.sparksession author 蔡政潔 email caizhengjie888 icloud.com date 2020 12 2 t...
Spark Sql之UDAF自定義聚合函式
udaf user defined aggregate function。使用者自定義聚合函式 我們可能下意識的認為udaf是需要和group by一起使用的,實際上udaf可以跟group by一起使用,也可以不跟group by一起使用,這個其實比較好理解,聯想到mysql中的max min等函...
Spark sql 自定義讀取資料源
通常在乙個流式計算的主流程裡,會用到很多對映資料,比較常見的是text文件,但是文件讀進來之後還要匹配相應的schema,本文通過自定義textsource資料來源,自動讀取預設的schema。defaultsource.scala package com.wxx.bigdata.sql custo...