hive的內建函式大全

2021-10-09 18:51:32 字數 4582 閱讀 8337

返回值

函式案例/備註

string

date_add(開始日期,需要累加的天數

select date_add(『2020-01-08 12:13:15』,5) ==> 累加5天,返回2020-01-13

string

date_sub(開始日期,需要減去天數)

select date_sub(2020-01-08 12:13:14』,5)==>減去5天,返回2020-01-03

intdatediff(結束日期,起始日期)

select datediff(『2020-08-06 12:13:14』,』2020-06-05 08:09:10』) ==>相差1天,忽略時分秒

string

date_format(date/timestamp/string,』yyyy』)

select (current_timestamp,』mm-dd』)==>注意 這個函式只能是date/timestamp/string型別

intunix_timestamp()

返回的是int型別,返回的是秒值,格式化這種資料使用的是from_unixtime(t,』yyyy-mm-dd』)

timestamp

current_timestamp

返回的是乙個timestamp型別,返回的是帶有毫秒值,格式化這種資料使用的是date_format(t,』mm-dd』)

bigint

unix_timestamp(『yyyy-mm-dd hh:mm:ss』)

select unix_timestamp(『2019-09-09 12:13:14』) ==>獲取該時間的秒值

string

from_unixtime(unix_timestamp(),』yyyy-mm-dd hh:mm:ss』)

select from_unixtime(unix_timestamp(),』yyyy-mm』)==>通過時間戳我只想要年和月

string

to_date(『yyyy-mm-dd hh:mm:ss』)

select to_date(『2020-07-13 12:13:14』);==>返回的是字串型別的時間,只有時間

intyear \month\ day \hour minute second weekofyear

返回值函式

案例/備註

type

cast( 1 as string)

select cast(1 as double); ===> 把1轉換成double型別用於計算

返回值函式

案例/備註

tif(條件,true,false)

條件為真,執行true,否則執行false

tnvl(comm,0)

如果comm欄位為null,執行0

tcoalesce(comm,v1,v2,v3…)

如果comm為null執行v1,如果v1為null執行v2以此類推

tcase when deptno=10 then 『a』 else 『b』 end判斷t

case deptno when 10 then 『a』 else 『b』 end

判斷boolean

isnull(comm)

如果comm為null,返回true

boolean

isnotnull(comm)

如果comm不為null,返回true

返回值函式

案例/備註

string

concat(『a』,』b』…)

select concat(『a』,』b』,』c』) ==>abc

intinstr(『ababab』,』ab』)

select instr(『ababcabab』,』abc』) ====>返回子字串的位置 3

intlength(『aaaaaa』)

select length(『aaaaaa』) ===>返回字串的長度 6

intlocate(『ab』,』ababababaab』,4)

select locate(『abc』,』ababcccabcddab,4);===>返回子字串的位置,從第4個位置開始

string

lower(『aaa』)

select lower(『aaa』)===>返回小寫的字串 aaa

string

upper(『ssss』)

select upper(『aaa』) ====> 返回大寫的字串aaa

string

regexp_replace(『aa 123 bb』,』[1-9]』,』w』)

select regexp_replace(『aa 123 bb』,』[1-9]』,』w』); 正則\s+ 代表的就是空白

array

split(『aa bb cc』,』 『)

select split(『a b c』, 『 『); ==>產生乙個字串陣列

string

substr/substring(『aback』,1,2)

select substr(『aback』,1,2); ==>擷取子字串,第乙個字元代表1,從1開始,一共擷取2個字元

string

trim(『 aa bb 『)

select trim(『 aa bb cc 『);===>只去掉前後空格

mapstr_to_map(』name-zs&age-18』,』&』,』-「)

select str_to_map(』name-zs&age-18』,』&』,』-『);====>最後產生乙個map結構

binary

encode(『aaa』,』utf-8』)

select encode(『aaa』,』utf-8』) ===> 以utf-8進行對aaa字串進行編碼

# 5.1 整合udf

5.2 需要編寫乙個方法 ,方法名必須是 evaluate

5.3 打包上傳到linux

5.4 在hive中載入jar包 add jar /tmp/***xx.jar

5.5 建立函式 create function fun as 『包名.類名』

5.6 使用

# 案例演示:

public

class

stringtolower

extends

udfreturn

newtext

(str.

tostring()

.tolowercase()

);}}

# 打成jar包、虛擬機器下輸入以下命令

add jar /tmp/zhibo2_6-

1.0-snapshot.jar;

create function string2lower as 'cn.kgc.hive.stringtolower』; 建立了乙個永久函式

0: jdbc:hive2:

//localhost:

10000

> select string2lower

('aaasssddddeeeggggaaaaaaaaaaaa');

+------

----

----

----

----

----

------+

--+| _c0 |+--

----

----

----

----

----

----

------+

--+| aaasssddddeeeggggaaaaaaaaaaaa |+--

----

----

----

----

----

----

----

--+————————————————+

(2)如果是hdfs的方式載入jar包,退出再次進入,不需要重新弄載入jar包,也不需要重新建立函式,直接使用即可.

add jar hdfs:

//hadoop1:

9000

/home/zhibo2_6-

1.0-snapshot.jar;

刪除函式:drop funcation str2lower;

(3)直接把jar包放在 hive目錄下的 auxlib目錄下即可。/opt/install/hive-

1.1.0

-cdh5.

14.2

/auxlib,不需要手動載入,每次啟動hive自動載入這個目錄下的jar包。

臨時函式與永久函式的區別?臨時函式只要hive的客戶端不退出,在任何資料庫中都可以使用;;;永久函式,在哪個資料庫中建立的,只能在哪個資料庫中使用.

統計單詞的個數:wordcount案例。

select word,

count

(word)

from (select explode

(split

('aa bb cc dd aa aa bb bb ee'

,' '

)) word)t1

group by word;

Hive內建函式

日期函式unix時間戳轉日期函式 from unixtime語法 from unixtime bigint unixtime string format 返回值 string 說明 轉化unix時間戳 從1970 01 01 00 00 00 utc到指定時間的秒數 到當前時區的時間格式 舉例 hi...

Hive 內建集合函式

size map k,v select size map型別引數 返回map中的元素個數size array v select size split 1,2,3,4,5 返回5map keys map k.v select map keys map型別引數 返回key的無序陣列map values ...

Hive的內建函式(十一)

3.hive常用函式 hive中包含很多內建函式,如果內建函式不能滿足實際應用時,也可以自定義函式 user defined function,udf 來實現,並在hive中呼叫。udf函式有3中型別 udf user defined function 函式 作用於單條資料,並且輸出乙個資料行。大多...