HIve常用函式,hive常用資料型別,Hive表

2021-09-26 04:28:35 字數 2374 閱讀 8167

六、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 ...