91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    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
      快速通道