真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用Hive中自定義UDAF函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)區(qū)域產(chǎn)品用戶訪問(wèn)排名

這篇文章主要介紹如何使用Hive中自定義UDAF函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)區(qū)域產(chǎn)品用戶訪問(wèn)排名,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供京口網(wǎng)站建設(shè)、京口做網(wǎng)站、京口網(wǎng)站設(shè)計(jì)、京口網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、京口企業(yè)網(wǎng)站模板建站服務(wù),十載京口做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

UDAF實(shí)現(xiàn)方法: 
1,用戶的UDAF必須繼承了org.apache.hadoop.hive.ql.exec.UDAF;
2,用戶的UDAF必須包含至少一個(gè)實(shí)現(xiàn)了org.apache.hadoop.hive.ql.exec的靜態(tài)類,諸如實(shí)現(xiàn)了 UDAFEvaluator 
3,一個(gè)計(jì)算函數(shù)必須實(shí)現(xiàn)的5個(gè)方法的具體含義如下:
init():主要是負(fù)責(zé)初始化計(jì)算函數(shù)并且重設(shè)其內(nèi)部狀態(tài),一般就是重設(shè)其內(nèi)部字段。一般在靜態(tài)類中定義一個(gè)內(nèi)部字段來(lái)存放最終的結(jié)果。
iterate():每一次對(duì)一個(gè)新值進(jìn)行聚集計(jì)算時(shí)候都會(huì)調(diào)用該方法,計(jì)算函數(shù)會(huì)根據(jù)聚集計(jì)算結(jié)果更新內(nèi)部狀態(tài)。當(dāng)輸 入值合法或者正確計(jì)算了,則       就返回true。
terminatePartial():Hive需要部分聚集結(jié)果的時(shí)候會(huì)調(diào)用該方法,必須要返回一個(gè)封裝了聚集計(jì)算當(dāng)前狀態(tài)的對(duì)象。
merge():Hive進(jìn)行合并一個(gè)部分聚集和另一個(gè)部分聚集的時(shí)候會(huì)調(diào)用該方法。
terminate():Hive最終聚集結(jié)果的時(shí)候就會(huì)調(diào)用該方法。計(jì)算函數(shù)需要把狀態(tài)作為一個(gè)值返回給用戶。

mapreduce階段調(diào)用函數(shù) 
MAP

init() 
iterate() 
terminatePartial()

Combiner

merge() 
terminatePartial()

REDUCE

init() 
merge() 
terminate()

一、自定義UDAF函數(shù)

點(diǎn)擊(此處)折疊或打開

此處)折疊或打開

  1. DROP TEMPORARY FUNCTION user_click;

  2. add jar /data/hive_udf-1.0.jar;

  3. CREATE TEMPORARY FUNCTION user_click AS 'hive.org.ruozedata.UserClickUDAF';

三、調(diào)用自定義UDAF函數(shù)處理數(shù)據(jù)

點(diǎn)擊(此處)折疊或打開

  1. insert overwrite directory '/works/tmp1' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  2. select regexp_replace(substring(rs, instr(rs, '=')+1), '}', '') from (

  3.   select explode(split(user_click(pcid, pcname, type),',')) as rs from (

  4.     select * from (

  5.       select '-2' as type, product_id as pcid, product_name as pcname from product_info

  6.       union all

  7.       select '-1' as type, city_id as pcid,area as pcname from city_info

  8.       union all

  9.       select count(1) as type,

  10.              product_id as pcid,

  11.              city_id as pcname

  12.         from user_click

  13.        where action_time='2016-05-05'

  14.       group by product_id,city_id

  15.     ) a

  16.   order by type) b

  17. ) c

四、創(chuàng)建Hive臨時(shí)外部表

點(diǎn)擊(此處)折疊或打開

  1. create external table tmp1(

  2. city_name string,

  3. product_name string,

  4. rn string

  5. )

  6. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  7. location '/works/tmp1';

五、-統(tǒng)計(jì)最終區(qū)域前3產(chǎn)品排名

點(diǎn)擊(此處)折疊或打開

  1. select * from (

  2. select city_name,

  3.        product_name,

  4.        floor(sum(rn)) visit_num,

  5.        row_number()over(partition by city_name order by sum(rn) desc) rn,

  6.        '2016-05-05' action_time

  7.   from tmp1

  8.  group by city_name,product_name

  9. ) a where rn <=3

六、統(tǒng)計(jì)結(jié)果
如何使用Hive中自定義UDAF函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)區(qū)域產(chǎn)品用戶訪問(wèn)排名

以上是“如何使用Hive中自定義UDAF函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)區(qū)域產(chǎn)品用戶訪問(wèn)排名”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


新聞名稱:如何使用Hive中自定義UDAF函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)區(qū)域產(chǎn)品用戶訪問(wèn)排名
分享網(wǎng)址:http://weahome.cn/article/pehidc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部