Spark SQL自定義函式 第五章

2021-10-05 03:18:03 字數 1398 閱讀 5472

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

abcstudy

small

通過自定義udf函式將每一行資料轉換成大寫

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...