一、Hive函數大全
在使用Hive進行數據處理時,我們會經常用到各種常用函數,如數學函數、字符串函數、條件函數等等。在這裡,我們對Hive的函數進行簡要介紹。
1.數學函數
ABS(x) 返回x的絕對值
CEIL(x) 返回不小於x的最小整數值
FLOOR(x) 返回不大於x的最大整數值
EXP(x) 返回x的指數值
LN(x) 返回以e為底,x的對數值
LOG10(x) 返回以10為底的x的對數值
PI() 返回一個常量pi
POWER(x,y) 返回x的y次方
RAND() 返回一個隨機數
ROUND(x,n) 返回x保留到小數點後n位的近似值
SQRT(x) 返回x的平方根
2.字符串函數
CONCAT(str1, str2, ...) 返回連接後的字符串
SUBSTR(str, start, len) 返回從start位置開始,長度為len的子字符串
TRIM([BOTH | LEADING | TRAILING] trimstr FROM str) 從字符串str中去掉開始、結尾、或者前後各自的trimstr
LOWER(str) 將字符串轉化為小寫
UPPER(str) 將字符串轉化為大寫
REPLACE(str,search,replace) 返回字符串str中search被replace替換後的結果
REGEXP_EXTRACT(str, regexp) 用正則表達式regexp在str中進行匹配
INSTR(str, substr) 返回substr在str中第一次出現的下標
LENGTH(str) 返回字符串的長度
3.日期函數
CURRENT_DATE() 返回系統當前日期
CURRENT_TIMESTAMP() 返回系統當前時間戳
DATEDIFF(enddate,startdate) 返回enddate與startdate之間的天數差
FROM_UNIXTIME(unixtime) 將unix時間戳轉化為日期格式
二、Hive常用的排名函數
Hive的排名函數主要涉及到三個函數:ROW_NUMBER(), RANK()和DENSE_RANK()。
1. ROW_NUMBER()
ROW_NUMBER()函數返回分組內結果集的行號,最好配合OVER()進行使用。
SELECT ROW_NUMBER() OVER()
FROM tablename
WHERE condition;
2. RANK()
RANK()函數會為每個分組返回一個排名值,如果有多個排名值相同,則它們的排名值也相同,下一位是排名值+1,排名值可能會有間隔。函數調用方法與ROW_NUMBER()相似。
3. DENSE_RANK()
DENSE_RANK()也會為每個分組返回一個排名值,但是排名值之間是連續的,沒有間隔。與前兩種不同的是,如果有多個排名值相同,它們的排名值也相同,但是下一位的排名值是仍然是排名值。
三、Hive數組函數
Hive中有很多數組函數可以對數組進行操作,如collect_set,collect_list等。
1. collect_set(元素)
collect_set()函數將列中的元素取出,存放到一個set集合中,由此去重並存儲,返回一個set類型的結果。
SELECT collect_set(column) FROM tablename WHERE condition;
2. collect_list(元素)
collect_list()函數將列中的元素取出,存放到一個list集合中,由此可以保留相同元素,返回一個list類型的結果。
SELECT collect_list(column) FROM tablename WHERE condition;
四、Hive lag函數
Lag函數可以返回一個給定行之前的結果集。
LAG(column, n) OVER (ORDER BY column)
其中,LAG()函數接收兩個參數:列和一個整數值。
另外需要注意的是,LAG()函數最好和ORDER BY一起使用。
五、Hive里的CEIL函數
CEIL()函數返回給定表達式的最小整數大於或等於結果。
SELECT CEIL(numerator / denominator) FROM tablename;
代碼示例中,我們將numerator和denominator相除(前提是numerator和denominator都是整數),然後取最小的整數作為結果。
六、Hive求和函數
在Hive中,我們可以使用SUM函數來對某個指定的列進行求和。
SELECT SUM(column) FROM tablename WHERE condition;
七、Hive中常用的系統函數
在Hive中,常用的系統函數包含如下:
FILESYSTEM(), SYSTEM(), ENVIRONMENT(), RDD(), TABLE(), VALIDATE(), MICROSECOND(), SECOND(), MINUTE(), HOUR(), DAY(), MONTH(), YEAR()。
這些函數可以用於調試、設置參數等等。
八、Hive DECODE函數
DECODE()函數是一個非標準函數,用於比較兩個參數,如果它們相等,返回第三個參數。
DECODE()函數參數如下:
DECODE(string1, value1, result1, value2, result2, value3, result3,...... valueN, resultN, default_result)
DECODE()函數根據一系列規則解析參數string1。如果某個值與string1匹配,則返回相應的結果result1。如果沒有匹配任何值,則返回默認結果default_result。也可以省略該參數,則默認值為null。
九、Hive分組函數
Hive中常用與分組的函數有AVG, COUNT, MAX, MIN和SUM。這些函數的使用方法與前面介紹的函數大致相同。
1. AVG()
AVG()函數用於計算分組中列的平均值。
SELECT AVG(column) FROM tablename GROUP BY column;
2. COUNT()
COUNT()函數返回一個分組中的行數。
SELECT COUNT(column) FROM tablename GROUP BY column;
3. MAX()
MAX()函數用於返回分組中列的最大值。
SELECT MAX(column) FROM tablename GROUP BY column;
4. MIN()
MIN()函數用於返回分組中列的最小值。
SELECT MIN(column) FROM tablename GROUP BY column;
5. SUM()
SUM()函數用於返回一個分組中所有列的總和。
SELECT SUM(column) FROM tablename GROUP BY column;
十、Hive字符串替換函數
Hive中常用的字符串替換函數是replace()函數。
replace()函數語法如下:
replace(string initial_string, string pattern, string replace)
在initial_string字符串中,將pattern字符串替換為replace字符串。
代碼示例如下:
SELECT replace(column, 'old_string', 'new_string') FROM tablename WHERE condition;
結論
以上就是對Hive常用函數的詳細介紹,包括數學函數、字符串函數、日期函數、數組函數、排名函數、分組函數、替換函數等等。可以看出,在Hive的數據處理中,這些常用函數會讓我們的開發變得更加便捷。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/154498.html