国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

            手機(jī)站
            千鋒教育

            千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

            千鋒教育

            掃一掃進(jìn)入千鋒手機(jī)站

            領(lǐng)取全套視頻
            千鋒教育

            關(guān)注千鋒學(xué)習(xí)站小程序
            隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

            當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > hive自定義函數(shù)的那點(diǎn)事

            hive自定義函數(shù)的那點(diǎn)事

            來(lái)源:千鋒教育
            發(fā)布人:小千
            時(shí)間: 2021-01-07 10:44:00 1609987440

            經(jīng)常有學(xué)習(xí)大數(shù)據(jù)的小伙伴問(wèn)小千,hive應(yīng)該如何去自定義函數(shù)?小千今天就來(lái)給大家分享一下hive自定義函數(shù)的教程,繼續(xù)往下看。

            一、自定義函數(shù)

            1 為什么需要自定義函數(shù)

            hive的內(nèi)置函數(shù)滿足不了所有的業(yè)務(wù)需求。

            hive提供很多的模塊可以自定義功能,比如:自定義函數(shù)、serde、輸入輸出格式等。

            2 常見(jiàn)自定義函數(shù)有哪些

             

            UDF:用戶自定義函數(shù),user defined function。一對(duì)一的輸入輸出。(最常用的)。

            UDTF:用戶自定義表生成函數(shù)。user defined table-generate function.一對(duì)多的輸入輸出。lateral view explode

            UDAF:用戶自定義聚合函數(shù)。user defined aggregate function。多對(duì)一的輸入輸出 count sum max。

            二、自定義函數(shù)實(shí)現(xiàn)

            1 UDF格式

            先在工程下新建一個(gè)pom.xml,加入以下maven的依賴包 請(qǐng)查看code/pom.xml

            定義UDF函數(shù)要注意下面幾點(diǎn):

            繼承org.apache.hadoop.hive.ql.exec.UDF

            重寫(xiě)evaluate(),這個(gè)方法不是由接口定義的,因?yàn)樗山邮艿膮?shù)的個(gè)數(shù),數(shù)據(jù)類型都是不確定的。Hive會(huì)檢查UDF,看能否找到和函數(shù)調(diào)用相匹配的evaluate()方法

            1.1 自定義函數(shù)第一個(gè)案例

            1

            2 函數(shù)加載方式

            2.1 命令加載

            這種加載只對(duì)本session有效

            # 1、將編寫(xiě)的udf的jar包上傳到服務(wù)器上,并且將jar包添加到hive的class path中

            # 進(jìn)入到hive客戶端,執(zhí)行下面命令

            add jar /hivedata/udf.jar

            # 2、創(chuàng)建一個(gè)臨時(shí)函數(shù)名,要跟上面hive在同一個(gè)session里面:

            create temporary function toUP as 'com.qf.hive.FirstUDF';

            3、檢查函數(shù)是否創(chuàng)建成功

            show functions;

            4. 測(cè)試功能

            select toUp('abcdef');

            5. 刪除函數(shù)

            drop temporary function if exists tolow;

            2.2 啟動(dòng)參數(shù)加載

            (也是在本session有效,臨時(shí)函數(shù))

            2

            2.3 配置文件加載

            通過(guò)配置文件方式這種只要用hive命令行啟動(dòng)都會(huì)加載函數(shù)

            3

            3 UDTF格式

            UDTF是一對(duì)多的輸入輸出,實(shí)現(xiàn)UDTF需要完成下面步驟

            繼承org.apache.hadoop.hive.ql.udf.generic.GenericUDF,

            重寫(xiě)initlizer()、getdisplay()、evaluate()。

            執(zhí)行流程如下:

            UDTF首先會(huì)調(diào)用initialize方法,此方法返回UDTF的返回行的信息(返回個(gè)數(shù),類型)。

            初始化完成后,會(huì)調(diào)用process方法,真正的處理過(guò)程在process函數(shù)中,在process中,每一次forward()調(diào)用產(chǎn)生一行;如果產(chǎn)生多列可以將多個(gè)列的值放在一個(gè)數(shù)組中,然后將該數(shù)組傳入到forward()函數(shù)。

            最后close()方法調(diào)用,對(duì)需要清理的方法進(jìn)行清理。

            3.1 需求:

            把"k1:v1;k2:v2;k3:v3"類似的的字符串解析成每一行多行,每一行按照key:value格式輸出

            3.2 源碼

            自定義函數(shù)如下:

            4

            3.3 打包加載

            對(duì)上述命令源文件打包為udf.jar,拷貝到服務(wù)器的/hivedata/目錄

            在Hive客戶端把udf.jar加入到hive中,如下:

            add jar /hivedata/udf.jar;

            3.4 創(chuàng)建臨時(shí)函數(shù):

            在Hive客戶端創(chuàng)建函數(shù):

            5

            3.5 測(cè)試臨時(shí)函數(shù)

            select parseMap("name:zhang;age:30;address:shenzhen")

            結(jié)果如下:

            6

            4 UDAF格式

            用戶自定義聚合函數(shù)。user defined aggregate function。多對(duì)一的輸入輸出 count sum max。定義一個(gè)UDAF需要如下步驟:

            UDF自定義函數(shù)必須是org.apache.hadoop.hive.ql.exec.UDAF的子類,并且包含一個(gè)火哥多個(gè)嵌套的的實(shí)現(xiàn)了org.apache.hadoop.hive.ql.exec.UDAFEvaluator的靜態(tài)類。

            函數(shù)類需要繼承UDAF類,內(nèi)部類Evaluator實(shí)UDAFEvaluator接口。

            Evaluator需要實(shí)現(xiàn) init、iterate、terminatePartial、merge、terminate這幾個(gè)函

            這幾個(gè)函數(shù)作用如下:

            函數(shù)說(shuō)明init實(shí)現(xiàn)接口UDAFEvaluator的init函數(shù)iterate每次對(duì)一個(gè)新值進(jìn)行聚集計(jì)算都會(huì)調(diào)用,計(jì)算函數(shù)要根據(jù)計(jì)算的結(jié)果更新其內(nèi)部狀態(tài)terminatePartial無(wú)參數(shù),其為iterate函數(shù)輪轉(zhuǎn)結(jié)束后,返回輪轉(zhuǎn)數(shù)據(jù)merge接收terminatePartial的返回結(jié)果,進(jìn)行數(shù)據(jù)merge操作,其返回類型為boolean。terminate返回最終的聚集函數(shù)結(jié)果。

            4.1 需求

            計(jì)算一組整數(shù)的最大值

            4.2 代碼

            7

            4.3 打包加載

            對(duì)上述命令源文件打包為udf.jar,拷貝到服務(wù)器的/hivedata/目錄

            在Hive客戶端把udf.jar加入到hive中,如下:

            add jar /hivedata/udf.jar;

            4.4 創(chuàng)建臨時(shí)函數(shù):

            在Hive客戶端創(chuàng)建函數(shù):

            8

            3.5 測(cè)試臨時(shí)函數(shù)

            select maxInt(mgr) from emp

            結(jié)果如下:

            9

            最后歡迎大家添加我們的大數(shù)據(jù)技術(shù)分享交流qq群:857910996  加群找群管理免費(fèi)領(lǐng)取大數(shù)據(jù)學(xué)習(xí)資料和項(xiàng)目源碼,趕緊來(lái)等你哦~~~~

            tags:
            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
            請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
            免費(fèi)領(lǐng)取
            今日已有369人領(lǐng)取成功
            劉同學(xué) 138****2860 剛剛成功領(lǐng)取
            王同學(xué) 131****2015 剛剛成功領(lǐng)取
            張同學(xué) 133****4652 剛剛成功領(lǐng)取
            李同學(xué) 135****8607 剛剛成功領(lǐng)取
            楊同學(xué) 132****5667 剛剛成功領(lǐng)取
            岳同學(xué) 134****6652 剛剛成功領(lǐng)取
            梁同學(xué) 157****2950 剛剛成功領(lǐng)取
            劉同學(xué) 189****1015 剛剛成功領(lǐng)取
            張同學(xué) 155****4678 剛剛成功領(lǐng)取
            鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
            董同學(xué) 138****2867 剛剛成功領(lǐng)取
            周同學(xué) 136****3602 剛剛成功領(lǐng)取
            相關(guān)推薦HOT
            USB Type C電纜正反插都可以?

            USB Type C電纜正反插都可以USB Type C電纜是一種通用連接標(biāo)準(zhǔn),其最顯著的特點(diǎn)是具備正反插功能。不論插頭的方向如何,用戶都可以輕松插入U(xiǎn)SB ...詳情>>

            2023-10-14 04:31:18
            為什么sql語(yǔ)句不支持關(guān)系代數(shù)中的除法?

            為什么SQL語(yǔ)句不支持關(guān)系代數(shù)中的除法1. SQL和關(guān)系代數(shù)的關(guān)系:SQL是一種基于關(guān)系代數(shù)的查詢語(yǔ)言,它的設(shè)計(jì)初衷是為了能夠以一種更接近自然語(yǔ)言...詳情>>

            2023-10-14 04:07:35
            sql 怎么根據(jù)父id查詢下三級(jí)子集?

            一、概述處理樹(shù)形數(shù)據(jù)時(shí),我們常常需要根據(jù)父ID查詢其下的子集。本文將引導(dǎo)您如何使用SQL進(jìn)行這一操作,尤其是查詢下三級(jí)子集。二、查詢方法詳...詳情>>

            2023-10-14 03:59:07
            什么是分治算法,和遞歸有什么關(guān)系?

            分治算法是什么分治算法是一種算法設(shè)計(jì)思想,其主要思想是將一個(gè)復(fù)雜的問(wèn)題分解為兩個(gè)或更多相同或相似的子問(wèn)題,直到子問(wèn)題簡(jiǎn)單到可以直接解決...詳情>>

            2023-10-14 03:22:51
            為什么微服務(wù)一定要上Docker?

            為什么微服務(wù)一定要上Docker微服務(wù)作為一種軟件架構(gòu)模式,需要考慮的因素包括服務(wù)的獨(dú)立性、可擴(kuò)展性、可維護(hù)性和可移植性等。這其中,Docker的...詳情>>

            2023-10-14 03:15:33
            快速通道