1 自定義udf函式與scala定義函式的方式是一樣的(也可以定義方法,呼叫的時候轉換為函式即可)
2 自定義的函式需要註冊後才能使用,註冊的方式為session.udf.register(自定義名稱, 需註冊的方法名)
. 其中session為sparksession物件.
private
val session: sparksession = sparksession.builder(
)"test"
).master(
"local"
).getorcreate(
)private
val frame: dataframe = session.read.json(
"file:///d:\\sparksql\\data\\emp.json"
)//維護一張臨時表
frame.createtempview(
"emp"
)//定義乙個自定義函式
val getlength =
(str:
string
)=> str.length
//註冊自定義的函式,兩個引數,可以重新起乙個名字
session.udf.register(
"mylength"
, getlength)
val sql =
""" |select ename,
|mylength(ename)
|from emp
|"""
.stripmargin
//執行sql
session.sql(sql)
.show(
) session.stop()}
private
val session: sparksession = sparksession.builder(
)"test"
).master(
"local"
).getorcreate(
)//讀取json資料轉為df物件
private
val frame: dataframe = session.read.json(
"file:///d:\\git\\data\\emp.json"
)//建立臨時表
frame.createtempview(
"emp"
)//註冊自定義函式,第乙個引數為自定義名稱,第二個引數為函式,因為是方法,所以需要用_轉為函式. 下劃線與方法名之間用乙個空格分隔
session.udf.register(
"getlevel"
, getlevel _)
//呼叫自定義函式getlevel
val sql =
""" |select ename,
|job,
|sal,
|getlevel(sal) as level
|from emp
|"""
.stripmargin
//執行sql
session.sql(sql)
.show(
) session.stop(
)//定義自定義方法,呼叫時候可以轉為函式. 需要乙個引數,呼叫時可以傳入df的乙個字段
def getlevel(sal:
int)
:string=}
執行結果
+------+---------+------+-------+
| ename| job| sal| level|
+------+---------+------+-------+
| smith| clerk| 800.0|level 3|
| allen| salesman|1600.5|level 2|
| ward| salesman|1250.0|level 3|
| jones| manager|2975.0|level 2|
|martin| salesman|1250.0|level 3|
| blake| manager|2850.0|level 2|
| clark| manager|2450.0|level 2|
| scott| analyst|3000.0|level 2|
| king|president|5000.0|level 1|
|turner| salesman|1500.0|level 3|
| adams| clerk|1100.0|level 3|
| james| clerk| 950.0|level 3|
| ford| analyst|3000.0|level 2|
|miller| clerk|1300.0|level 3|
+------+---------+------+-------+
hive自定義函式UDF
hive自定義函式 udf 可以幫助使用者輕鬆實現在hql語句中展現自定義查詢結果。這裡以乙個簡單的連線函式來實現使用者自定義函式,假設表結構如下 表中只有兩個簡單的字段,id和name。這裡實現乙個將id和name用 連線的函式,最後輸出結果。第一步 書寫stringjoin類,繼承udf,實現名...
hive自定義函式 UDF
幾個命令 檢視所有函式 hive show functions 檢視函式的使用方法 hive desc function 函式名 兩數和 addudf 自定義hive函式 description name myadd value myadd int a int b return a b extend...
msql 自定義函式(UDF)
建立udf create aggregate function function name parameter name type,parameter name type,returns runtime body 簡單來說就是 create function 函式名稱 引數列表 returns 返回...