




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
湖南汽車工程職業(yè)學(xué)院教師授課教案第11周第5-8課時累計88課時課程名稱數(shù)據(jù)倉庫HIVE應(yīng)用授課課題HIVE內(nèi)置函數(shù)(一)授課專業(yè)班級大數(shù)據(jù)2101班、2102班、2103班教學(xué)目標(biāo)1、掌握Hive內(nèi)置函數(shù)的應(yīng)用,能夠在HiveQL語句中靈活運用聚合函數(shù)。2、掌握Hive內(nèi)置函數(shù)的應(yīng)用,能夠在HiveQL語句中靈活運用數(shù)學(xué)函數(shù)。3、掌握Hive內(nèi)置函數(shù)的應(yīng)用,能夠在HiveQL語句中靈活運用集合函數(shù)。教學(xué)要點教學(xué)重點聚合函數(shù)、數(shù)學(xué)函數(shù)教學(xué)難點聚合函數(shù)的靈活使用課型一體化授課教法與學(xué)法(教具)示范演示法、任務(wù)驅(qū)動教學(xué)法、分組合作教學(xué)法課后作業(yè)完成智課堂作業(yè)、看視頻熟練操作教學(xué)后記(教師課后填寫)1、結(jié)合項目要多練;2、鼓勵學(xué)生之間要相互請教、相互幫忙,合作解決問題,有利于他們能力的增長授課教師王海霞、黃史記【課前復(fù)習(xí)】導(dǎo)出倉庫數(shù)據(jù)的方式有哪些?基本語法又是什么?【作業(yè)點評】展示智課堂學(xué)生作業(yè)完成情況,并做點評?!緦W(xué)習(xí)目標(biāo)】能在HIVE中熟練使用聚合函數(shù)、數(shù)學(xué)函數(shù)和集合函數(shù)?!菊n程導(dǎo)入】Hive同傳統(tǒng)的關(guān)系數(shù)據(jù)庫一樣含有大量內(nèi)置函數(shù),Hive內(nèi)置函數(shù)可以實現(xiàn)某些固定功能,方便用戶直接使用,使用內(nèi)置函數(shù)可以滿足日常開發(fā)中所涉及的常見開發(fā)需求。但是,對于任何一個系統(tǒng)而言,都不可能將實際用戶的所有需求都事先考慮周全。Hive也一樣,對于一些特殊的用戶需求,Hive已提供的內(nèi)置函數(shù)是滿足不了的,因此一個系統(tǒng)的開放性就顯得尤為重要了。也就是說,雖然系統(tǒng)不能事先考慮到所有可能的用戶需求,但卻可以提供一個開發(fā)的接口,允許開發(fā)人員根據(jù)個性化的需求來定義特殊功能函數(shù)的實現(xiàn),這就是Hive用戶自定義函數(shù),它可以根據(jù)實際使用場景編寫函數(shù)?!拘抡n講授】Hive內(nèi)部提供了多種類型的函數(shù)供用戶使用,包括聚合函數(shù)、集合函數(shù)、數(shù)學(xué)函數(shù)等,這些函數(shù)統(tǒng)稱為Hive內(nèi)置函數(shù)。通過對Hive內(nèi)置函數(shù)的靈活運用,可以提高程序可讀性及執(zhí)行速度。本任務(wù)以“學(xué)生信息系統(tǒng)”項目為實操載體,完成理解Hive函數(shù)和函數(shù)分類、應(yīng)用聚合函數(shù)、集合函數(shù)、數(shù)學(xué)函數(shù)、類型轉(zhuǎn)換函數(shù)、日期函數(shù)、條件函數(shù)、字符串函數(shù)和表生成函數(shù)等學(xué)習(xí)目標(biāo)。一、初識Hive函數(shù)在Hive客戶端,通過命令SHOWFUNCTIONS命令能查看系統(tǒng)所有的內(nèi)置函數(shù),默認(rèn)內(nèi)置271個函數(shù),不同Hive版本,內(nèi)置函數(shù)數(shù)量稍有不同;通過命令DESCRIBEFUNCTION<function_name>;能查看某個函數(shù)的描述;通過命令DESCRIBEFUNCTIONEXTENDED<function_name>;能查看某個函數(shù)詳細的使用方法?!局v練結(jié)合】【例1】使用命令查看COUNT()函數(shù)相關(guān)信息。【新課講授】二、Hive函數(shù)分類Hive中的內(nèi)置函數(shù)、自定義函數(shù)均分為三類:UDF、UDTF和UDAF。UDF,全稱User-Defined-Function,也稱普通函數(shù)。特點是一進一出,即輸入一行數(shù)據(jù),輸出一行數(shù)據(jù)。比如:UPPER()函數(shù)、SUBSTRING()函數(shù)?!局v練結(jié)合】【例2】使用命令驗證UPPER()函數(shù)為UDF。UDAF,全稱User-DefinedAggregationFunction,也稱聚合函數(shù)。特點是多進一出,即輸入多行數(shù)據(jù),輸出一行數(shù)據(jù)。比如:COUNT()函數(shù)、SUM()函數(shù)。UDTF,全稱User-DefinedTable-GeneratingFunction,也稱表生成函數(shù)或炸裂函數(shù)。特點是一進多出,即輸入一行數(shù)據(jù),輸出多行數(shù)據(jù)。比如:EXPLODE函數(shù)。【新課講授】三、聚合函數(shù)聚合函數(shù)是按照特定條件對一組值執(zhí)行計算,以總結(jié)出關(guān)于組的結(jié)論,因此,聚合函數(shù)通常與SELECT語句和GROUPBY子句一起使用,即針對某一組數(shù)據(jù)執(zhí)行計算。聚合函數(shù)名返回值類型用法描述COUNT()BIGINTCOUNT(*):統(tǒng)計總行數(shù),包括含有NULL值的行COUNT(expr):統(tǒng)計提供非NULL的expr表達式值的行數(shù)COUNT(DISTINCTexpr[,expr]):統(tǒng)計提供非NULL且去重后的expr表達式值的行數(shù)SUM()DOUBLESUM(col):求指定列的和SUM(DISTINCTcol):求去重后的列的和AVG()DOUBLEAVG(col):求指定列的平均值A(chǔ)VG(DISTINCTcol):求去重后的列的平均值MIN()DOUBLEMIN(col):求指定列的最小值MAX()DOUBLEMAX(col):求指定列的最大值VAR_POP()DOUBLEVAR_POP(col):求指定列數(shù)值的方差VAR_SAMP()DOUBLEVAR_SAMP(col):求指定列數(shù)值的樣本方差STDDEV_POP()DOUBLESTDDEV_POP(col):求指定列數(shù)值的標(biāo)準(zhǔn)偏差STDDEV_SAMP()DOUBLESTDDEV_SAMP(col):求指定列數(shù)值的樣本標(biāo)準(zhǔn)偏差COVAR_POP()DOUBLECOVAR_POP(col1,col2):求指定列數(shù)值的總體協(xié)方差COVAR_SAMP()DOUBLECOVAR_SAMP(col1,col2):求指定列數(shù)值的樣本協(xié)方差CORR()DOUBLECORR(col1,col2):求兩列數(shù)值的皮爾遜相關(guān)系數(shù)COLLECT_SET()ARRAYCOLLECT_SET(col):返回消除了重復(fù)元素的數(shù)組COLLECT_LIST()ARRAYCOLLECT_LIST(col):返回允許重復(fù)元素的數(shù)組【講練結(jié)合】【例3】使用COUNT函數(shù)統(tǒng)計出student表中參加了Hive課程學(xué)習(xí)的人數(shù)。SELECTCOUNT(course_scores['Hive'])FROMstudentdb.student;【例4】使用COUNT函數(shù)統(tǒng)計出student表中學(xué)生是來自幾個不同的城市。SELECTCOUNT(DISTINCTaddress.city)FROMstudentdb.student;【例5】使用AVG函數(shù)分班統(tǒng)計出student表中各班Hive課程和Python課程的平均分。SELECTclass,AVG(course_scores['Hive'])ASavg_Hive_score,AVG(course_scores['Python'])ASavg_Python_scoreFROMstudentdb.studentGROUPBYclass;【例6】使用MIN函數(shù)和MAX函統(tǒng)計統(tǒng)計出student表中各班Python課程的最低分和最高分。SELECTclass,MIN(course_scores['Python'])ASmin_Python_score,MAX(course_scores['Python'])ASmax_Python_scoreFROMstudentdb.studentGROUPBYclass;【新課講授】四、集合函數(shù)集合函數(shù)是針對集合數(shù)據(jù)類型進行操作。以下通過表6-2介紹Hive內(nèi)置的集合函數(shù)。Hive內(nèi)置的集合函數(shù)集合函數(shù)名返回值類型用法描述SIZE
()INTSIZE
(MAP):求MAP數(shù)據(jù)類型列的長度。SIZE
(ARRAY):求ARRAY數(shù)據(jù)類型列的長度。MAP_KEYS()ARRAYMAP_KEYS(Map):返回MAP數(shù)據(jù)類型列的所有KEY。MAP_VALUES()AYYAYMAP_VALUES(Map):返回MAP數(shù)據(jù)類型列的所有VALUE。ARRAY_CONTAINS()BOOLEANARRAY_CONTAINS(ARRAY,value):返回ARRAY數(shù)據(jù)類型列中是否包含值value,若包含則返回值為true,反之返回值為false。SORT_ARRAY()ARRAYSORT_ARRAY(ARRAY):按自然順序?qū)RRAY數(shù)據(jù)類型列中的值進行排序?!局v練結(jié)合】【例7】使用SIZE函數(shù)統(tǒng)計student表中'Zhangdan'同學(xué)有多少個室友。SELECTSIZE(roommate)FROMstudentdb.studentWHEREstname='Zhangdan';圖6-SEQ圖6-\*ARABIC10統(tǒng)計'Zhangdan'同學(xué)的室友人數(shù)【例8】使用ARRAY_CONTAINS函數(shù)統(tǒng)計student表中學(xué)號為2018010201的室友名字。SELECTstname,ARRAY_CONTAINS(roommate,'2018010201')is_roommateFROMstudentdb.student;圖6-SEQ圖6-\*ARABIC11統(tǒng)計學(xué)號為2018010201的室友名字【例9】使用ARRAY_CONTAINS函數(shù)和COLLECT_LIST函數(shù)將所有學(xué)生的Hive課程分?jǐn)?shù)排序。SELECTSORT_ARRAY(COLLECT_LIST(course_scores['Hive']))FROMstudentdb.student;圖6-SEQ圖6-\*ARABIC12排序所有同學(xué)的Hive課程分?jǐn)?shù)【新課講授】四、數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)是針對數(shù)字類型的值進行計算。下面通過表6-3介紹Hive內(nèi)置的常用數(shù)學(xué)函數(shù)。表6-SEQ表6-\*ARABIC3Hive內(nèi)置的常用數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)名返回值類型用法描述ROUND()DOUBLEROUND
(DOUBLE
a):返回數(shù)字a四舍五入后的值。ROUND
(DOUBLE
a,INT
b):返回數(shù)字a四舍五入后的值,保留小數(shù)點后b位。FLOOR()BIGINTFLOOR(DOUBLE
a):返回數(shù)字a向下取整的值。CEIL()BIGINTCEIL(DOUBLE
a):返回數(shù)字a向上取整的值。RAND()DOUBLERAND():返回0~1的隨機值。RAND(INT
seed):通過隨機因子seed返回0~1的隨機值。EXP()DOUBLEEXP(DOUBLE/DECIMAL
a):返回自然常數(shù)e的a次方值。LN()DOUBLELN(DOUBLE/DECIMAL
a):返回以自然常數(shù)e為底a的對數(shù)值。LOG()DOUBLELOG(DOUBLE/DECIMAL
base,DOUBLE/DECIMAL
a):返回以base為底a的對數(shù)值。LOG2(DOUBLE/DECIMAL
a):返回以2為底a的對數(shù)值。LOG10(DOUBLE/DECIMAL
a):返回以10為底a的對數(shù)值。POW()DOUBLEPOW(DOUBLE/DECIMAL
a,DOUBLE/DECIMAL
p):返回a的p次方。SQRT()DOUBLESQRT(DOUBLE/DECIMAL
a):返回a的平方根。ABS()DOUBLEABS(DOUBLE
a):返回a的絕對值。SIN()DOUBLESIN
(DOUBLE/DECIMAL
a):返回a的正弦值。ASIN()DOUBLEASIN(DOUBLEa),ASIN(DECIMALa):求a的反正弦值COS()DOUBLECOS
(DOUBLE/DECIMAL
a):返回a的余弦值。ACOS()DOUBLEACOS
(DOUBLE/DECIMAL
a):返回a的反余弦值。TAN()DOUBLETAN
(DOUBLE/DECIMAL
a):返回a的正切值。ATAN()DOUBLEATAN
(DOUBLE/DECIMAL
a):返回a的反正切值。PI()DOUBLE返回圓周率
Pi
的值。GREATEST()TGREATEST(T
v1,T
v2…):返回列表中的最大值,若存在NULL,則認(rèn)定NULL為最大值,其中v1、v2可以是值或列,若v1和v2為列,則返回兩列中每行的最大值。LEAST()TLEAST(T
v1,T
v2…):返回列表中的最小值,若存在NULL,則認(rèn)定NULL為最小值,其中v1、v2可以是值或列,若v1和v2為列,則返回兩列中每行的最小值。SIGN()DOUBLESIGN
(DOUBLE/DECIMAL
a):如果
a
是正數(shù),返回1.0;如果a是負數(shù),返回-1.0;如果a是0,返回
0.0。E()DOUBLE返回自然常數(shù)e的值。NEGATIVE()INT/DOUBLENEGATIVE
(DOUBLE/INT
a):返回a的相反值。FACTORIAL()BIGINTFACTORIAL(INTa):求a的階乘CBRT()DOUBLECBRT(DOUBLEa):求a的立方根
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店資產(chǎn)投資與經(jīng)營管理合伙協(xié)議書二零二五
- 二零二五年度私人住宅裝修工人安全責(zé)任合同
- 2025年度海洋資源開發(fā)橫向課題執(zhí)行協(xié)議
- 二零二五年度小程序游戲運營合作協(xié)議
- 2025年度電子元器件采購合同主要內(nèi)容簡述
- 二零二五年度購房合同定金支付及變更協(xié)議書
- 2025年度酒店員工勞動權(quán)益保障合同
- 二零二五年度綠色建筑股權(quán)協(xié)議及合伙人合作開發(fā)協(xié)議
- 2025年度美發(fā)店員工工傷事故處理勞動合同
- 空調(diào)安裝工勞動合同
- DeepSeek零基礎(chǔ)到精通手冊(保姆級教程)
- 瓷磚鋪貼勞務(wù)承包協(xié)議書
- 2025年四川司法警官職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 新建污水處理廠工程EPC總承包投標(biāo)方案(技術(shù)標(biāo))
- 柔性電路板自動化制造-深度研究
- 2024年河南建筑職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 《宏觀經(jīng)濟管理研究》課件
- 蘇教版五年級下冊數(shù)學(xué)全冊教案設(shè)計
- 曲臂車作業(yè)安全技術(shù)交底
- 2025年安徽合肥市公安局經(jīng)開分局輔警招聘58人歷年高頻重點提升(共500題)附帶答案詳解
- 小學(xué)五年級地方課程《話說溫州》教學(xué)計劃
評論
0/150
提交評論