LanguageManual UDF - Apache Hive - Apache Software Foundation https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
hive函數(shù)參考手冊 - 風生水起 - 博客園 http://www.cnblogs.com/end/archive/2012/06/18/2553682.html
hive函數(shù)參考手冊 - lixiaotaoplus的專欄 - 博客頻道 - CSDN.NET http://blog.csdn.net/lixiaotaoplus/article/details/20250341
hive函數(shù)參考手冊
原文見:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
1.內(nèi)置運算符1.1關(guān)系運算符
運算符
類型
說明
A = B
所有原始類型
如果A與B相等,返回TRUE,否則返回FALSE
A == B
無
失敗,因為無效的語法纺阔。 SQL使用”=”,不使用”==”鸽素。
A <> B
所有原始類型
如果A不等于B返回TRUE,否則返回FALSE霉囚。如果A或B值為”NULL”蝶念,結(jié)果返回”NULL”翰蠢。
A < B
所有原始類型
如果A小于B返回TRUE,否則返回FALSE屎篱。如果A或B值為”NULL”服赎,結(jié)果返回”NULL”葵蒂。
A <= B
所有原始類型
如果A小于等于B返回TRUE,否則返回FALSE。如果A或B值為”NULL”重虑,結(jié)果返回”NULL”刹勃。
A > B
所有原始類型
如果A大于B返回TRUE,否則返回FALSE。如果A或B值為”NULL”嚎尤,結(jié)果返回”NULL”。
A >= B
所有原始類型
如果A大于等于B返回TRUE,否則返回FALSE伍宦。如果A或B值為”NULL”芽死,結(jié)果返回”NULL”。
A IS NULL
所有類型
如果A值為”NULL”次洼,返回TRUE,否則返回FALSE
A IS NOT NULL
所有類型
如果A值不為”NULL”关贵,返回TRUE,否則返回FALSE
A LIKE B
字符串
如果A或B值為”NULL”,結(jié)果返回”NULL”卖毁。字符串A與B通過sql進行匹配揖曾,如果相符返回TRUE,不符返回FALSE亥啦。B字符串中 的””代表任一字符炭剪,”%”則代表多個任意字符。例如: (‘foobar’ like ‘foo’)返回FALSE翔脱,( ‘foobar’ like ‘foo _ _’或者 ‘foobar’ like ‘foo%’)則返回TURE
A RLIKE B
字符串
如果A或B值為”NULL”奴拦,結(jié)果返回”NULL”。字符串A與B通過java進行匹配届吁,如果相符返回TRUE错妖,不符返回FALSE。例如:( ‘foobar’ rlike ‘foo’)返回FALSE疚沐,(’foobar’ rlike ‘^f.*r$’ )返回TRUE暂氯。
A REGEXP B
字符串
與RLIKE相同。
1.2算術(shù)運算符
運算符
類型
說明
A + B
所有數(shù)字類型
A和B相加亮蛔。結(jié)果的與操作數(shù)值有共同類型痴施。例如每一個整數(shù)是一個浮點數(shù),浮點數(shù)包含整數(shù)尔邓。所以晾剖,一個浮點數(shù)和一個整數(shù)相加結(jié)果也是一個浮點數(shù)。
A – B
所有數(shù)字類型
A和B相減梯嗽。結(jié)果的與操作數(shù)值有共同類型齿尽。
A * B
所有數(shù)字類型
A和B相乘,結(jié)果的與操作數(shù)值有共同類型灯节。需要說明的是循头,如果乘法造成溢出绵估,將選擇更高的類型。
A / B
所有數(shù)字類型
A和B相除卡骂,結(jié)果是一個double(雙精度)類型的結(jié)果国裳。
A % B
所有數(shù)字類型
A除以B余數(shù)與操作數(shù)值有共同類型。
A & B
所有數(shù)字類型
運算符查看兩個參數(shù)的二進制表示法的值全跨,并執(zhí)行按位”與”操作缝左。兩個表達式的一位均為1時,則結(jié)果的該位為 1浓若。否則渺杉,結(jié)果的該位為 0。
A|B
所有數(shù)字類型
運算符查看兩個參數(shù)的二進制表示法的值挪钓,并執(zhí)行按位”或”操作是越。只要任一表達式的一位為 1,則結(jié)果的該位為 1碌上。否則倚评,結(jié)果的該位為 0。
A ^ B
所有數(shù)字類型
運算符查看兩個參數(shù)的二進制表示法的值馏予,并執(zhí)行按位”異或”操作天梧。當且僅當只有一個表達式的某位上為 1 時,結(jié)果的該位才為 1霞丧。否則結(jié)果的該位為 0腿倚。
~A
所有數(shù)字類型
對一個表達式執(zhí)行按位”非”(取反)。
1.3邏輯運算符
運算符
類型
說明
A AND B
布爾值
A和B同時正確時,返回TRUE,否則FALSE蚯妇。如果A或B值為NULL敷燎,返回NULL。
A && B
布爾值
與”A AND B”相同
A OR B
布爾值
A或B正確,或兩者同時正確返返回TRUE,否則FALSE箩言。如果A和B值同時為NULL硬贯,返回NULL。
A | B
布爾值
與”A OR B”相同
NOT A
布爾值
如果A為NULL或錯誤的時候返回TURE陨收,否則返回FALSE饭豹。
! A
布爾值
與”NOT A”相同
1.4復(fù)雜類型函數(shù)
函數(shù)
類型
說明
map
(key1, value1, key2, value2, …)
通過指定的鍵/值對,創(chuàng)建一個map务漩。
struct
(val1, val2, val3, …)
通過指定的字段值拄衰,創(chuàng)建一個結(jié)構(gòu)。結(jié)構(gòu)字段名稱將COL1饵骨,COL2翘悉,…
array
(val1, val2, …)
通過指定的元素,創(chuàng)建一個數(shù)組居触。
1.5對復(fù)雜類型函數(shù)操作
函數(shù)
類型
說明
A[n]
A是一個數(shù)組妖混,n為int型
返回數(shù)組A的第n個元素老赤,第一個元素的索引為0。如果A數(shù)組為['foo','bar']制市,則A[0]返回’foo’和A[1]返回”bar”抬旺。
M[key]
M是Map<K, V>,關(guān)鍵K型
返回關(guān)鍵值對應(yīng)的值祥楣,例如mapM為 {‘f’ -> ‘foo’, ‘b’ -> ‘bar’, ‘a(chǎn)ll’ -> ‘foobar’}开财,則M['all'] 返回’foobar’。
S.x
S為struct
返回結(jié)構(gòu)x字符串在結(jié)構(gòu)S中的存儲位置误褪。如 foobar {int foo, int bar} foobar.foo的領(lǐng)域中存儲的整數(shù)床未。
2.內(nèi)置函數(shù)2.1數(shù)學(xué)函數(shù)
返回類型
函數(shù)
說明
BIGINT
round(double a)
四舍五入
DOUBLE
round(double a, int d)
小數(shù)部分d位之后數(shù)字四舍五入,例如round(21.263,2),返回21.26
BIGINT
floor(double a)
對給定數(shù)據(jù)進行向下舍入最接近的整數(shù)振坚。例如floor(21.2),返回21。
BIGINT
ceil(double a), ceiling(double a)
將參數(shù)向上舍入為最接近的整數(shù)斋扰。例如ceil(21.2),返回23.
double
rand(), rand(int seed)
返回大于或等于0且小于1的平均分布隨機數(shù)(依重新計算而變)
double
exp(double a)
返回e的n次方
double
ln(double a)
返回給定數(shù)值的自然對數(shù)
double
log10(double a)
返回給定數(shù)值的以10為底自然對數(shù)
double
log2(double a)
返回給定數(shù)值的以2為底自然對數(shù)
double
log(double base, double a)
返回給定底數(shù)及指數(shù)返回自然對數(shù)
double
pow(double a, double p) power(double a, double p)
返回某數(shù)的乘冪
double
sqrt(double a)
返回數(shù)值的平方根
string
bin(BIGINT a)
返回二進制格式渡八,參考:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_hex
string
hex(BIGINT a) hex(string a)
將整數(shù)或字符轉(zhuǎn)換為十六進制格式。參考:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_hex
string
unhex(string a)
十六進制字符轉(zhuǎn)換由數(shù)字表示的字符传货。
string
conv(BIGINT num, int from_base, int to_base)
將指定數(shù)值屎鳍,由原來的度量體系轉(zhuǎn)換為指定的試題體系。例如CONV(‘a(chǎn)’,16,2),返回问裕。參考:’1010′ http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_conv
double
abs(double a)
取絕對值
int double
pmod(int a, int b) pmod(double a, double b)
返回a除b的余數(shù)的絕對值
double
sin(double a)
返回給定角度的正弦值
double
asin(double a)
返回x的反正弦逮壁,即是X。如果X是在-1到1的正弦值粮宛,返回NULL窥淆。
double
cos(double a)
返回余弦
double
acos(double a)
返回X的反余弦,即余弦是X巍杈,忧饭,如果-1<= A <= 1,否則返回null.
int double
positive(int a) positive(double a)
返回A的值筷畦,例如positive(2)词裤,返回2。
int double
negative(int a) negative(double a)
返回A的相反數(shù)鳖宾,例如negative(2),返回-2吼砂。
2.2收集函數(shù)
返回類型
函數(shù)
說明
int
size(Map<K.V>)
返回的map類型的元素的數(shù)量
int
size(Array<T>)
返回數(shù)組類型的元素數(shù)量
2.3類型轉(zhuǎn)換函數(shù)
返回類型
函數(shù)
說明
指定 “type”
cast(expr as <type>)
類型轉(zhuǎn)換。例如將字符”1″轉(zhuǎn)換為整數(shù):cast(’1′ as bigint)鼎文,如果轉(zhuǎn)換失敗返回NULL渔肩。
2.4日期函數(shù)
返回類型
函數(shù)
說明
string
from_unixtime(bigint unixtime[, string format])
UNIX_TIMESTAMP參數(shù)表示返回一個值’YYYY- MM – DD HH:MM:SS’或YYYYMMDDHHMMSS.uuuuuu格式,這取決于是否是在一個字符串或數(shù)字語境中使用的功能拇惋。該值表示在當前的時區(qū)赖瞒。
bigint
unix_timestamp()
如果不帶參數(shù)的調(diào)用女揭,返回一個Unix時間戳(從’1970- 01 – 0100:00:00′到現(xiàn)在的UTC秒數(shù))為無符號整數(shù)。
bigint
unix_timestamp(string date)
指定日期參數(shù)調(diào)用UNIX_TIMESTAMP()栏饮,它返回參數(shù)值’1970- 01 – 0100:00:00′到指定日期的秒數(shù)吧兔。
bigint
unix_timestamp(string date, string pattern)
指定時間輸入格式,返回到1970年秒數(shù):unix_timestamp(’2009-03-20′, ‘yyyy-MM-dd’) = 1237532400 參考:http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
string
to_date(string timestamp)
返回時間中的年月日: to_date(“1970-01-01 00:00:00″) = “1970-01-01″
string
to_dates(string date)
給定一個日期date袍嬉,返回一個天數(shù)(0年以來的天數(shù))
int
year(string date)
返回指定時間的年份境蔼,范圍在1000到9999,或為”零”日期的0伺通。
int
month(string date)
返回指定時間的月份箍土,范圍為1至12月,或0一個月的一部分罐监,如’0000-00-00′或’2008-00-00′的日期吴藻。
int
day(string date) dayofmonth(date)
返回指定時間的日期
int
hour(string date)
返回指定時間的小時,范圍為0到23弓柱。
int
minute(string date)
返回指定時間的分鐘沟堡,范圍為0到59。
int
second(string date)
返回指定時間的秒矢空,范圍為0到59航罗。
int
weekofyear(string date)
返回指定日期所在一年中的星期號,范圍為0到53屁药。
int
datediff(string enddate, string startdate)
兩個時間參數(shù)的日期之差粥血。
int
date_add(string startdate, int days)
給定時間,在此基礎(chǔ)上加上指定的時間段酿箭。
int
date_sub(string startdate, int days)
給定時間复亏,在此基礎(chǔ)上減去指定的時間段。
2.5條件函數(shù)
返回類型
函數(shù)
說明
T
if(boolean testCondition, T valueTrue, T valueFalseOrNull)
判斷是否滿足條件缭嫡,如果滿足返回一個值蜓耻,如果不滿足則返回另一個值盗蟆。
T
COALESCE(T v1, T v2, …)
返回一組數(shù)據(jù)中氛驮,第一個不為NULL的值,如果均為NULL,返回NULL芹橡。
T
CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
當a=b時,返回c讥耗;當a=d時有勾,返回e,否則返回f古程。
T
CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
當值為a時返回b,當值為c時返回d蔼卡。否則返回e。
2.6字符函數(shù)
返回類型
函數(shù)
說明
int
length(string A)
返回字符串的長度
string
reverse(string A)
返回倒序字符串
string
concat(string A, string B…)
連接多個字符串挣磨,合并為一個字符串雇逞,可以接受任意數(shù)量的輸入字符串
string
concat_ws(string SEP, string A, string B…)
鏈接多個字符串荤懂,字符串之間以指定的分隔符分開。
string
substr(string A, int start) substring(string A, int start)
從文本字符串中指定的起始位置后的字符塘砸。
string
substr(string A, int start, int len) substring(string A, int start, int len)
從文本字符串中指定的位置指定長度的字符节仿。
string
upper(string A) ucase(string A)
將文本字符串轉(zhuǎn)換成字母全部大寫形式
string
lower(string A) lcase(string A)
將文本字符串轉(zhuǎn)換成字母全部小寫形式
string
trim(string A)
刪除字符串兩端的空格,字符之間的空格保留
string
ltrim(string A)
刪除字符串左邊的空格掉蔬,其他的空格保留
string
rtrim(string A)
刪除字符串右邊的空格廊宪,其他的空格保留
string
regexp_replace(string A, string B, string C)
字符串A中的B字符被C字符替代
string
regexp_extract(string subject, string pattern, int index)
通過下標返回正則表達式指定的部分。regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 2) returns ‘bar.’
string
parse_url(string urlString, string partToExtract [, string keyToExtract])
返回URL指定的部分女轿。parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1′, ‘HOST’) 返回:’facebook.com’
string
get_json_object(string json_string, string path)
select a.timestamp, get_json_object(a.appevents, ‘$.eventid’), get_json_object(a.appenvets, ‘$.eventname’) from log a;
string
space(int n)
返回指定數(shù)量的空格
string
repeat(string str, int n)
重復(fù)N次字符串
int
ascii(string str)
返回字符串中首字符的數(shù)字值
string
lpad(string str, int len, string pad)
返回指定長度的字符串箭启,給定字符串長度小于指定長度時,由指定字符從左側(cè)填補蛉迹。
string
rpad(string str, int len, string pad)
返回指定長度的字符串傅寡,給定字符串長度小于指定長度時,由指定字符從右側(cè)填補北救。
array
split(string str, string pat)
將字符串轉(zhuǎn)換為數(shù)組荐操。
int
find_in_set(string str, string strList)
返回字符串str第一次在strlist出現(xiàn)的位置。如果任一參數(shù)為NULL,返回NULL扭倾;如果第一個參數(shù)包含逗號,返回0挽绩。
array<array<string>>
sentences(string str, string lang, string locale)
將字符串中內(nèi)容按語句分組膛壹,每個單詞間以逗號分隔,最后返回數(shù)組唉堪。 例如sentences(‘Hello there! How are you?’) 返回:( (“Hello”, “there”), (“How”, “are”, “you”) )
array<struct<string,double>>
ngrams(array<array<string>>, int N, int K, int pf)
SELECT ngrams(sentences(lower(tweet)), 2, 100 [, 1000]) FROM twitter;
array<struct<string,double>>
context_ngrams(array<array<string>>, array<string>, int K, int pf)
SELECT context_ngrams(sentences(lower(tweet)), array(null,null), 100, [, 1000]) FROM twitter;
3.內(nèi)置的聚合函數(shù)(UDAF)
返回類型
函數(shù)
說明
bigint
count(*) , count(expr), count(DISTINCT expr[, expr_., expr_.])
返回記錄條數(shù)模聋。
double
sum(col), sum(DISTINCT col)
求和
double
avg(col), avg(DISTINCT col)
求平均值
double
min(col)
返回指定列中最小值
double
max(col)
返回指定列中最大值
double
var_pop(col)
返回指定列的方差
double
var_samp(col)
返回指定列的樣本方差
double
stddev_pop(col)
返回指定列的偏差
double
stddev_samp(col)
返回指定列的樣本偏差
double
covar_pop(col1, col2)
兩列數(shù)值協(xié)方差
double
covar_samp(col1, col2)
兩列數(shù)值樣本協(xié)方差
double
corr(col1, col2)
返回兩列數(shù)值的相關(guān)系數(shù)
double
percentile(col, p)
返回數(shù)值區(qū)域的百分比數(shù)值點。0<=P<=1,否則返回NULL,不支持浮點型數(shù)值唠亚。
array<double>
percentile(col, array(p~1,,\ [, p,,2,,]…))
返回數(shù)值區(qū)域的一組百分比值分別對應(yīng)的數(shù)值點链方。0<=P<=1,否則返回NULL,不支持浮點型數(shù)值。
double
percentile_approx(col, p[, B])
Returns an approximate pth percentile of a numeric column (including floating point types) in the group. The B parameter controls approximation accuracy at the cost of memory. Higher values yield better approximations, and the default is 10,000. When the number of distinct values in col is smaller than B, this gives an exact percentile value.
array<double>
percentile_approx(col, array(p~1,, [, p,,2_]…) [, B])
Same as above, but accepts and returns an array of percentile values instead of a single one.
array<struct{‘x’,'y’}>
histogram_numeric(col, b)
Computes a histogram of a numeric column in the group using b non-uniformly spaced bins. The output is an array of size b of double-valued (x,y) coordinates that represent the bin centers and heights
array
collect_set(col)
返回無重復(fù)記錄
4.內(nèi)置表生成函數(shù)(UDTF)
返回類型
函數(shù)
說明
數(shù)組
explode(array<TYPE> a)
數(shù)組一條記錄中有多個參數(shù)灶搜,將參數(shù)拆分祟蚀,每個參數(shù)生成一列。
json_tuple
get_json_object語句:select a.timestamp, get_json_object(a.appevents, ‘$.eventid’), get_json_object(a.appenvets, ‘$.eventname’) from log a; json_tuple語句: select a.timestamp, b.* from log a lateral view json_tuple(a.appevent, ‘eventid’, ‘eventname’) b as f1, f2
explode示例:
數(shù)組
SQL
返回
myCol [1,2] [3,4]
SELECT explode(myCol) AS myNewCol FROM myTable
myNewCol1 2 3 4
轉(zhuǎn)載自:http://www.cnblogs.com/end/archive/2012/06/18/2553682.html