




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