數據倉庫Hive應用實戰 教案97-100課時:HIVE自定義URF函數_第1頁
數據倉庫Hive應用實戰 教案97-100課時:HIVE自定義URF函數_第2頁
數據倉庫Hive應用實戰 教案97-100課時:HIVE自定義URF函數_第3頁
數據倉庫Hive應用實戰 教案97-100課時:HIVE自定義URF函數_第4頁
數據倉庫Hive應用實戰 教案97-100課時:HIVE自定義URF函數_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

湖南汽車工程職業學院教師授課教案第13周第1-4課時累計100課時課程名稱數據倉庫HIVE應用授課課題Hive自定義URF函數授課專業班級大數據2101班、2102班、2103班教學目標完成認識UDF特性、應用UDF函數、UDTF函數等學習目標,能應用自定義函數解決實際問題。教學要點教學重點UDF特性、應用UDF函數教學難點應用自定義函數解決實際問題課型一體化授課教法與學法(教具)示范演示法、任務驅動教學法、分組合作教學法課后作業完成超星平臺作業、看視頻熟練操作教學后記(教師課后填寫)1、結合項目要多練;2、鼓勵學生之間要相互請教、相互幫忙,合作解決問題,有利于他們能力的增長;3、掌握思維導圖對于知識體系構建的重要性。授課教師王海霞、黃史記【課前復習】常見的內置函數有哪些,各有什么用?【作業點評】展示智課堂學生作業完成情況,并做點評。【學習目標】以“學生信息系統”項目為實操載體,完成認識UDF特性、應用UDF函數等學習目標,能應用自定義函數解決實際問題。【課程導入】Hive自定義函數分為自定義UDF函數、自定義UDAF和自定義UDTF。UDF是最常用的自定義函數,它的特點是一進一出,即輸入單一參數(行/列)輸出也是單一參數(行/列),例如UPPER()函數、SUBSTRING()函數等。接下來我們學習自定義UDF函數的定義、特點和使用方式。【新課講授】一、UDF的定義用戶自定義函數是用戶自定義的能夠擴展HiveQL功能的函數。Hive把這類函數叫做:UDF(UserDefinedFunction),只需要將UDF加入到用戶會話中(交互式的或者通過腳本執行的),其使用方式就與內置函數一致。標準UDF的特點是一進一出,即輸入單一參數(行/列)輸出也是單一參數(行/列),UDF需要繼承org.apache.hadoop.hive.ql.UDF類。二、UDF的特點Hive提供了以下兩種不同的接口編寫UDF程序:第一種,支持基礎類型的UDF接口,apache.hadoop.hive.ql.exec.UDF,處理并返回基本數據類型,int、string、boolean、double等;第二種,支持復雜類型的GenericUDF接口,apache.hadoop.hive.ql.udf.generic.GenericUDF,可處理并返回復雜數據類型,如Map、List、Array等,同時支持嵌套;三、UDF的使用方式UDF包含兩種使用方式,方式一,臨時函數僅當前會話中有效,退出后重新連接即無法使用;方式二,永久函數注冊UDF信息到MetaStore元數據中,可永久使用。UDF使用需要將編寫的UDF類編譯為jar包添加到Hive中,根據需要創建臨時函數或永久函數。【講練結合】本任務實施以“學生信息系統”項目為實操載體,依次完成新建maven項目環境、編寫UDF函數Java代碼、部署UDF函數到Hive環境、應用UDF函數等操作,最終完成編寫Java程序實現自定義函數UDF,用于比較studentdb數據庫中student表中學生的多門課程成績,得到分數最高的課程成績,如果最高課程成績大于90分,輸出“優秀”,成績大于60分小于90分,輸出“中等”,成績小于60分,輸出“不合格”。新建maven項目環境1、新建maven項目。打開IntelliJIDEA開發工具,新建Maven項目,配置項目使用的JDK,點擊“Next”按鈕。圖6-SEQ圖6-\*ARABIC38新建maven項目在彈出的對話框中,填寫“Name”項目名稱和“Location”項目存放位置,填寫完成后點擊“Finish”按鈕。圖6-SEQ圖6-\*ARABIC39填寫項目名稱2、添加項目依賴。項目中的XML文件pom.xml用于管理Maven項目依賴的配置文件,本項目需要在配置文件pom.xml中添加用于開發Hive程序的依賴。<dependencies><!--Hive依賴--><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>2.3.4</version></dependency></dependencies>【講練結合】編寫UDF函數的Java代碼新建代碼包。選中并右擊項目hiveFunction中的“java”目錄,在彈出的菜單欄中依次選擇“New→Package”,從而新建Package包。圖6-SEQ圖6-\*ARABIC40新建Package新建Package包操作后,會彈出“NewPackage”窗口,在文本輸入框“Enternewpackagename”中設置Package名稱“udf”。圖6-SEQ圖6-\*ARABIC41填寫Package的名字創建UDF主類。選中包“udf”并單擊鼠標右鍵,在彈出的菜單中依次選擇“New→JavaClass”新建Java類。圖6-SEQ圖6-\*ARABIC42新建JavaClass創建Java類操作后,會彈出“CreateNewClass”窗口,在文本框“Name”中輸入“HiveUDF”設置類名稱。圖6-SEQ圖6-\*ARABIC43填寫JavaClass的名字編寫UDF函數代碼: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);//獲取每個鍵所對應的值if(value!=null&&value>max){max=value;}}if(max>90){best_subject="優秀";}elseif(max>=60&&max<90){best_subject="中等";}else{best_subject="不合格";}returnnewText(newText(best_subject));}}【講練結合】部署UDF函數到Hive環境封裝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包。根據控制臺提示jar包所在的目錄找到封裝完成的jar包,為了便于后續區分其他jar包,這里將jar包重命名為best_subject.jar。在虛擬機中創建目錄/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中,并執行“LISTJARS;”命令,查看當前Hive中包含的jar包。hive(default)>addjar/hive_jar/best_subject.jar;圖6-SEQ圖6-\*ARABIC49添加jar包到hive【講練結合】應用UDF函數創建臨時函數,將臨時函數命名為best_subject,指定類名。臨時函數只在當前會話窗口有效,關閉窗口或在另一個窗口臨時函數都不會存在,在當前窗口內時可以在任意數據庫中調用該臨時函數createtemporaryfunctionbest_subjectas'udf.HiveUDF';執行“SHOWFUNCTIONSLIKE'best*';”命令,查看創建的函數best_subject,若不指定子句LIKE,則會查詢Hive的所有函數包括內置函數。圖6-SEQ圖6-\*ARABIC50創建臨時函數使用函數best_subject查看學生成績最好的科目的等級,命名如下:selectstname,best_subject(course_scores)fromstudent;UDF函數的實現效果如下:圖6-SEQ圖6-\*ARABIC51調用臨時函數若想要創建持久函數,則需要提前將jar包上傳到HDFS上,在Hive中創建持久函數的示例如下。CREATEFUNCTIONbest_subjectAS'udf.HiveUDF'USINGJAR'hdfs://best_subject.jar';刪除函數的語法格式如下。DROP[T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論