六、hive函式
1.函式自定義
1)udf (常用)一進一出
<1>udf 函式可以直接應用於 select 語句,對查詢結構做格式化處理後,再 輸出內容。
<2>編寫 udf 函式的時候需要注意一下幾點:
a)自定義 udf 需要繼承 org.apache.hadoop.hive.ql.udf。
b)需要實現 evaluate 函式,evaluate 函式支援過載。
<3>步驟
a)把程式打包放到目標機器上去;
b)進入 hive 客戶端,新增 jar 包:hive>add jar /jar/udf_test.jar;(清除快取 時記得刪除jar包delete jar /*)
c)建立臨時函式:hive>create temporary function add_example as 'hive.udf.add';
d)查詢 hql 語句:
select add_example(8, 9) from scores;
select add_example(scores.math, scores.art) from scores;
select add_example(6, 7, 8, 6.8) from scores;
e)銷毀臨時函式:hive> drop temporary function add_example;
2)udaf聚集函式,多進一出
多行進一行出,如 sum()、min(),用在 group by 時
<1>必須繼承org.apache.hadoop.hive.ql.exec.udaf(函式類繼承)
org.apache.hadoop.hive.ql.exec.udafevaluator(內部類 eval uator 實現 udafevaluator 介面)
<2>evaluator 需要實現 init、iterate、terminatepartial、merge、t erminate 這 幾個函式
· init():類似於建構函式,用於 udaf 的初始化
· iterate():接收傳入的引數,並進行內部的輪轉,返回 boolean
· terminatepartial():無引數,其為 iterate 函式輪轉結束後,返回輪轉資料, 類似於 hadoop 的 combinermerge():接收 terminatepartial 的返回結果, 進行資料 merge 操作,其返回型別為 boolean
·terminate():返回最終的聚集函式結果
3)udtf,一進多出
一進多出,如 lateralview explore()
使用方式 :在hive會話中add自定義函式的jar 檔案,然後建立 function 繼 而使用函式; 這些函式都是針對單元格值的,並不是針對行的。
七、hive資料儲存
hive沒有專門的儲存結構,資料表,檢視,元資料等等都可以;而且也沒有專門的資料儲存格式,textfile、rcfile都可以的;
hive只需要在建立表的時候告訴hive資料中的列分隔符和行分隔符,hive就可以解析資料。
那麼分割符都有那些呢,預設的話是列分隔符「ctrl+a」
預設行分隔符是「/n」
八、hive表
1.hive表常用的儲存格式
textfile 預設格式 行儲存
sequencefile 二進位制檔案 行儲存
rcfile 按行分塊 按列儲存
orc 按行分塊 按列儲存
2.hive索引(了解)
乙個表上建立索引建立乙個索引使用給定的列表的列作為鍵
3.hive工作原理
首先使用者先將任務交給diver
接著編譯器獲得這個使用者的plan,並根據這個使用者的任務去metastore獲取需要的hive元資料資訊
然後進行對任務的編譯,將hql先後轉換為抽象語法樹、查詢塊、邏輯計畫、最後轉為物理計畫(mapreduce),最終選擇最優方案提交給diver
diver將這個最優方案轉交給excutionengion執行,將獲得的元資料資訊交給jobtracker或者sourcemanager執行該任務
最終這個任務會直接讀取hdfs中的檔案進行操作,取得並返回結果
hive 解密 Hive 常用函式
2.concat str1,sep,str2,sep,str3,和 concat ws sep,str1,str2,str3,字串連線函式,需要是 string型字段。如果4個字段,想得到如下結果,看下兩個函式的區別 eg 1 select concat 江蘇省 南京市 玄武區 徐莊軟體園 2 se...
Hive常用函式
if判斷 select if 1 1,yes no 返回yes 語法 case expression when condition1 then result1 when condition2 then result2 else result end 例子 case a when 1 then one...
hive常用函式
hive常用函式 1 檢視函式用法 desc function 函式名 desc function extended 函式名 2 獲取array陣列長度 size函式 select size collect list field from table select size split hello ...