udf:叫一进一出
udaf:聚合函数,多进一出
udtf:一进多出
Hive函数
1.内置运算符
1.1关系运算符
运算符 |
类型 |
说明 |
A = B |
所有原始类型 |
如果A与B相等,返回TRUE,否则返回FALSE |
A == B |
无 |
失败,因为无效的语法。 SQL使用”=”,不使用”==”。 |
A <> B |
所有原始类型 |
如果A不等于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 |
A < B |
所有原始类型 |
如果A小于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 |
A <= B |
所有原始类型 |
如果A小于等于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 |
A > B |
所有原始类型 |
如果A大于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 |
A >= B |
所有原始类型 |
如果A大于等于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。 |
A IS NULL |
所有类型 |
如果A值为”NULL”,返回TRUE,否则返回FALSE |
A IS NOT NULL |
所有类型 |
如果A值不为”NULL”,返回TRUE,否则返回FALSE |
A LIKE B |
字符串 |
如 果A或B值为”NULL”,结果返回”NULL”。字符串A与B通过sql进行匹配,如果相符返回TRUE,不符返回FALSE。B字符串中 的”_”代表任一字符,”%”则代表多个任意字符。例如: (‘foobar’ like ‘foo’)返回FALSE,( ‘foobar’ like ‘foo_ _ _’或者 ‘foobar’ like ‘foo%’)则返回TURE |
A RLIKE B |
字符串 |
如 果A或B值为”NULL”,结果返回”NULL”。字符串A与B通过java进行匹配,如果相符返回TRUE,不符返回FALSE。例如:( ‘foobar’ rlike ‘foo’)返回FALSE,(’foobar’ rlike ‘^f.*r$’ )返回TRUE。 |
A REGEXP B |
字符串 |
与RLIKE相同。 |
1.2算术运算符
运算符 |
类型 |
说明 |
A + B |
所有数字类型 |
A和B相加。结果的与操作数值有共同类型。例如每一个整数是一个浮点数,浮点数包含整数。所以,一个浮点数和一个整数相加结果也是一个浮点数。 |
A – B |
所有数字类型 |
A和B相减。结果的与操作数值有共同类型。 |
A * B |
所有数字类型 |
A和B相乘,结果的与操作数值有共同类型。需要说明的是,如果乘法造成溢出,将选择更高的类型。 |
A / B |
所有数字类型 |
A和B相除,结果是一个double(双精度)类型的结果。 |
A % B |
所有数字类型 |
A除以B余数与操作数值有共同类型。 |
A & B |
所有数字类型 |
运算符查看两个参数的二进制表示法的值,并执行按位”与”操作。两个表达式的一位均为1时,则结果的该位为 1。否则,结果的该位为 0。 |
A|B |
所有数字类型 |
运算符查看两个参数的二进制表示法的值,并执行按位”或”操作。只要任一表达式的一位为 1,则结果的该位为 1。否则,结果的该位为 0。 |
A ^ B |
所有数字类型 |
运算符查看两个参数的二进制表示法的值,并执行按位”异或”操作。当且仅当只有一个表达式的某位上为 1 时,结果的该位才为 1。否则结果的该位为 0。 |
~A |
所有数字类型 |
对一个表达式执行按位”非”(取反)。 |
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复杂类型函数
函数 |
类型 |
说明 |
map |
(key1, value1, key2, value2, …) |
通过指定的键/值对,创建一个map。 |
struct |
(val1, val2, val3, …) |
通过指定的字段值,创建一个结构。结构字段名称将COL1,COL2,… |
array |
(val1, val2, …) |
通过指定的元素,创建一个数组。 |
1.5对复杂类型函数操作
函数 |
类型 |