sprk sql自定義UDF函式

2021-10-10 20:29:29 字數 2475 閱讀 1546

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