




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
湖南汽車(chē)工程職業(yè)學(xué)院教師授課教案第13周第1-4課時(shí)累計(jì)100課時(shí)課程名稱(chēng)數(shù)據(jù)倉(cāng)庫(kù)HIVE應(yīng)用授課課題Hive自定義URF函數(shù)授課專(zhuān)業(yè)班級(jí)大數(shù)據(jù)2101班、2102班、2103班教學(xué)目標(biāo)完成認(rèn)識(shí)UDF特性、應(yīng)用UDF函數(shù)、UDTF函數(shù)等學(xué)習(xí)目標(biāo),能應(yīng)用自定義函數(shù)解決實(shí)際問(wèn)題。教學(xué)要點(diǎn)教學(xué)重點(diǎn)UDF特性、應(yīng)用UDF函數(shù)教學(xué)難點(diǎn)應(yīng)用自定義函數(shù)解決實(shí)際問(wèn)題課型一體化授課教法與學(xué)法(教具)示范演示法、任務(wù)驅(qū)動(dòng)教學(xué)法、分組合作教學(xué)法課后作業(yè)完成超星平臺(tái)作業(yè)、看視頻熟練操作教學(xué)后記(教師課后填寫(xiě))1、結(jié)合項(xiàng)目要多練;2、鼓勵(lì)學(xué)生之間要相互請(qǐng)教、相互幫忙,合作解決問(wèn)題,有利于他們能力的增長(zhǎng);3、掌握思維導(dǎo)圖對(duì)于知識(shí)體系構(gòu)建的重要性。授課教師王海霞、黃史記【課前復(fù)習(xí)】常見(jiàn)的內(nèi)置函數(shù)有哪些,各有什么用?【作業(yè)點(diǎn)評(píng)】展示智課堂學(xué)生作業(yè)完成情況,并做點(diǎn)評(píng)?!緦W(xué)習(xí)目標(biāo)】以“學(xué)生信息系統(tǒng)”項(xiàng)目為實(shí)操載體,完成認(rèn)識(shí)UDF特性、應(yīng)用UDF函數(shù)等學(xué)習(xí)目標(biāo),能應(yīng)用自定義函數(shù)解決實(shí)際問(wèn)題。【課程導(dǎo)入】Hive自定義函數(shù)分為自定義UDF函數(shù)、自定義UDAF和自定義UDTF。UDF是最常用的自定義函數(shù),它的特點(diǎn)是一進(jìn)一出,即輸入單一參數(shù)(行/列)輸出也是單一參數(shù)(行/列),例如UPPER()函數(shù)、SUBSTRING()函數(shù)等。接下來(lái)我們學(xué)習(xí)自定義UDF函數(shù)的定義、特點(diǎn)和使用方式?!拘抡n講授】一、UDF的定義用戶(hù)自定義函數(shù)是用戶(hù)自定義的能夠擴(kuò)展HiveQL功能的函數(shù)。Hive把這類(lèi)函數(shù)叫做:UDF(UserDefinedFunction),只需要將UDF加入到用戶(hù)會(huì)話(huà)中(交互式的或者通過(guò)腳本執(zhí)行的),其使用方式就與內(nèi)置函數(shù)一致。標(biāo)準(zhǔn)UDF的特點(diǎn)是一進(jìn)一出,即輸入單一參數(shù)(行/列)輸出也是單一參數(shù)(行/列),UDF需要繼承org.apache.hadoop.hive.ql.UDF類(lèi)。二、UDF的特點(diǎn)Hive提供了以下兩種不同的接口編寫(xiě)UDF程序:第一種,支持基礎(chǔ)類(lèi)型的UDF接口,apache.hadoop.hive.ql.exec.UDF,處理并返回基本數(shù)據(jù)類(lèi)型,int、string、boolean、double等;第二種,支持復(fù)雜類(lèi)型的GenericUDF接口,apache.hadoop.hive.ql.udf.generic.GenericUDF,可處理并返回復(fù)雜數(shù)據(jù)類(lèi)型,如Map、List、Array等,同時(shí)支持嵌套;三、UDF的使用方式UDF包含兩種使用方式,方式一,臨時(shí)函數(shù)僅當(dāng)前會(huì)話(huà)中有效,退出后重新連接即無(wú)法使用;方式二,永久函數(shù)注冊(cè)UDF信息到MetaStore元數(shù)據(jù)中,可永久使用。UDF使用需要將編寫(xiě)的UDF類(lèi)編譯為jar包添加到Hive中,根據(jù)需要?jiǎng)?chuàng)建臨時(shí)函數(shù)或永久函數(shù)?!局v練結(jié)合】本任務(wù)實(shí)施以“學(xué)生信息系統(tǒng)”項(xiàng)目為實(shí)操載體,依次完成新建maven項(xiàng)目環(huán)境、編寫(xiě)UDF函數(shù)Java代碼、部署UDF函數(shù)到Hive環(huán)境、應(yīng)用UDF函數(shù)等操作,最終完成編寫(xiě)Java程序?qū)崿F(xiàn)自定義函數(shù)UDF,用于比較studentdb數(shù)據(jù)庫(kù)中student表中學(xué)生的多門(mén)課程成績(jī),得到分?jǐn)?shù)最高的課程成績(jī),如果最高課程成績(jī)大于90分,輸出“優(yōu)秀”,成績(jī)大于60分小于90分,輸出“中等”,成績(jī)小于60分,輸出“不合格”。新建maven項(xiàng)目環(huán)境1、新建maven項(xiàng)目。打開(kāi)IntelliJIDEA開(kāi)發(fā)工具,新建Maven項(xiàng)目,配置項(xiàng)目使用的JDK,點(diǎn)擊“Next”按鈕。圖6-SEQ圖6-\*ARABIC38新建maven項(xiàng)目在彈出的對(duì)話(huà)框中,填寫(xiě)“Name”項(xiàng)目名稱(chēng)和“Location”項(xiàng)目存放位置,填寫(xiě)完成后點(diǎn)擊“Finish”按鈕。圖6-SEQ圖6-\*ARABIC39填寫(xiě)項(xiàng)目名稱(chēng)2、添加項(xiàng)目依賴(lài)。項(xiàng)目中的XML文件pom.xml用于管理Maven項(xiàng)目依賴(lài)的配置文件,本項(xiàng)目需要在配置文件pom.xml中添加用于開(kāi)發(fā)Hive程序的依賴(lài)。<dependencies><!--Hive依賴(lài)--><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>2.3.4</version></dependency></dependencies>【講練結(jié)合】編寫(xiě)UDF函數(shù)的Java代碼新建代碼包。選中并右擊項(xiàng)目hiveFunction中的“java”目錄,在彈出的菜單欄中依次選擇“New→Package”,從而新建Package包。圖6-SEQ圖6-\*ARABIC40新建Package新建Package包操作后,會(huì)彈出“NewPackage”窗口,在文本輸入框“Enternewpackagename”中設(shè)置Package名稱(chēng)“udf”。圖6-SEQ圖6-\*ARABIC41填寫(xiě)Package的名字創(chuàng)建UDF主類(lèi)。選中包“udf”并單擊鼠標(biāo)右鍵,在彈出的菜單中依次選擇“New→JavaClass”新建Java類(lèi)。圖6-SEQ圖6-\*ARABIC42新建JavaClass創(chuàng)建Java類(lèi)操作后,會(huì)彈出“CreateNewClass”窗口,在文本框“Name”中輸入“HiveUDF”設(shè)置類(lèi)名稱(chēng)。圖6-SEQ圖6-\*ARABIC43填寫(xiě)JavaClass的名字編寫(xiě)UDF函數(shù)代碼:packageudf;importorg.apache.hadoop.hive.ql.exec.UDF;importorg.apache.hadoop.io.Text;importjava.util.*;publicclassHiveUDFextendsUDF{publicTextevaluate(Map<String,Float>cs){floatmax=0;Stringbest_subject;SetkeySet=cs.keySet();//獲取鍵的集合Iteratorit=keySet.iterator();//迭代鍵的集合while(it.hasNext()){Objectkey=it.next();Floatvalue=cs.get(key);//獲取每個(gè)鍵所對(duì)應(yīng)的值if(value!=null&&value>max){max=value;}}if(max>90){best_subject="優(yōu)秀";}elseif(max>=60&&max<90){best_subject="中等";}else{best_subject="不合格";}returnnewText(newText(best_subject));}}【講練結(jié)合】部署UDF函數(shù)到Hive環(huán)境封裝jar包。在IntelliJIDEA主界面,依次選擇“View→ToolsWindows→Maven”打開(kāi)Maven窗口。在Maven窗口中展開(kāi)“Lifecycle”折疊框,雙擊“package”選項(xiàng)進(jìn)行封裝jar包操作。圖6-SEQ圖6-\*ARABIC44打開(kāi)maven窗口圖6-SEQ圖6-\*ARABIC45封裝jar包圖6-SEQ圖6-\*ARABIC46成功封裝jar包上傳jar包。根據(jù)控制臺(tái)提示jar包所在的目錄找到封裝完成的jar包,為了便于后續(xù)區(qū)分其他jar包,這里將jar包重命名為best_subject.jar。在虛擬機(jī)中創(chuàng)建目錄/hive_jar:[root@hive/]#mkdir/hive_jar圖6-SEQ圖6-\*ARABIC47新建文件夾使用secureFX工具將best_subject.jar上傳到/hive_jar/目錄下。圖6-SEQ圖6-\*ARABIC48上傳jar包到/hive_jar目錄添加best_subject.jar到hive中,并執(zhí)行“LISTJARS;”命令,查看當(dāng)前Hive中包含的jar包。hive(default)>addjar/hive_jar/best_subject.jar;圖6-SEQ圖6-\*ARABIC49添加jar包到hive【講練結(jié)合】應(yīng)用UDF函數(shù)創(chuàng)建臨時(shí)函數(shù),將臨時(shí)函數(shù)命名為best_subject,指定類(lèi)名。臨時(shí)函數(shù)只在當(dāng)前會(huì)話(huà)窗口有效,關(guān)閉窗口或在另一個(gè)窗口臨時(shí)函數(shù)都不會(huì)存在,在當(dāng)前窗口內(nèi)時(shí)可以在任意數(shù)據(jù)庫(kù)中調(diào)用該臨時(shí)函數(shù)createtemporaryfunctionbest_subjectas'udf.HiveUDF';執(zhí)行“SHOWFUNCTIONSLIKE'best*';”命令,查看創(chuàng)建的函數(shù)best_subject,若不指定子句LIKE,則會(huì)查詢(xún)Hive的所有函數(shù)包括內(nèi)置函數(shù)。圖6-SEQ圖6-\*ARABIC50創(chuàng)建臨時(shí)函數(shù)使用函數(shù)best_subject查看學(xué)生成績(jī)最好的科目的等級(jí),命名如下:selectstname,best_subject(course_scores)fromstudent;UDF函數(shù)的實(shí)現(xiàn)效果如下:圖6-SEQ圖6-\*ARABIC51調(diào)用臨時(shí)函數(shù)若想要?jiǎng)?chuàng)建持久函數(shù),則需要提前將jar包上傳到HDFS上,在Hive中創(chuàng)建持久函數(shù)的示例如下。CREATEFUNCTIONbest_subjectAS'udf.HiveUDF'USINGJAR'hdfs://best_subject.jar';刪除函數(shù)的語(yǔ)法格式如下。DROP[T
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度辦公用品銷(xiāo)售折扣及定制服務(wù)合同
- 二零二五年度燃料研發(fā)與專(zhuān)利許可合同
- 二零二五年度股權(quán)代持合同:包含企業(yè)資產(chǎn)重組的綜合性協(xié)議
- 2025年度環(huán)保設(shè)施勞務(wù)分包安全責(zé)任協(xié)議
- 二零二五年度頂管施工安全教育與應(yīng)急預(yù)案制定合同
- 二零二五年度合資企業(yè)股份代持與清算協(xié)議
- 二零二五年度特色餐飲服務(wù)人員勞動(dòng)合同范本
- 二零二五年度地質(zhì)鉆孔施工環(huán)境保護(hù)協(xié)議
- 二零二五年度集體勞動(dòng)合同在民營(yíng)企業(yè)中的創(chuàng)新
- 二零二五年度企業(yè)產(chǎn)品售后服務(wù)宣傳片委托協(xié)議
- 【獨(dú)立儲(chǔ)能】山西省獨(dú)立儲(chǔ)能政策及收益分析-中國(guó)能建
- 2024內(nèi)蒙古中考數(shù)學(xué)二輪專(zhuān)題復(fù)習(xí) 二次函數(shù)與幾何綜合題 類(lèi)型二 面積問(wèn)題(課件)
- DL-T5796-2019水電工程邊坡安全監(jiān)測(cè)技術(shù)規(guī)范
- 高等數(shù)學(xué)教案第四章不定積分
- 2024年高考時(shí)事政治考試題庫(kù)(134題)
- 安全生產(chǎn)責(zé)任制考試試卷及答案
- 擠壓模具拋光培訓(xùn)課件
- 大學(xué)生寒假回訪(fǎng)母校社會(huì)實(shí)踐報(bào)告
- 2023年跨境電商年度總結(jié)報(bào)告
- 水磨鉆成本分析
- 2023-2024學(xué)年外研版(三起)英語(yǔ)六年級(jí)下冊(cè)期末測(cè)試卷含答案
評(píng)論
0/150
提交評(píng)論