参考资料 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-HiveOperatorsandUserDefinedFunctions%28UDFs%29
显示显示函数信息
SHOW FUNCTIONS;
DESCRIBE FUNCTION <function_name>;
DESCRIBE FUNCTION EXTENDED <function_name>;
内建操作符
关系运算符
A = B 返回TRUE或者FALSE,如果有NULL返回FALSE
A <=> B 如果与 = 类似,支持NULL的判断
A == B 不支持
A != B 或 A <> B 返回NULL、TRUE或FALSE
A < B、A <= B、A > B、A >=B 返回NULL、TRUE或FALSE
A [NOT] BETWEEN B AND C 返回NULL、TRUE或FALSE,TRUE包括B和C的值
A IS [NOT] NULL
A [NOT] LIKE B 返回NULL、TRUE或FALSE,”_”通配一个字符,”%”通配任意个字符
A RLIKE B 或者 A REGEXP B 正则匹配
算数运算符
A + B、A - B、A * B、A / B
A % B 去余数
A & B 位与
A | B 位或
A ^ B 位XOR
~A 位非
逻辑运算符
A and B或 A&&B 返回NULL、TRUE或FALSE,
A OR B 或 A || B A或B一个为TRUE则返回TRUE,FALSE or NULL 返回NULL,否则返回FALSE
NOT A 或 ! A 返回NULL、TRUE或FALSE,
A [NOT] IN (Val1, Val2, …) A是否在(Val1, Val2, …)中
[NOT] EXISTS (subquery) 子查询是否有结果返回,hive0.13开始支持
复杂类型构造(Complex Type Constructors)
map (key1,value1,key2,value2,....) 创建一个map, 感觉map与Python中的字典类似
struct (val1, val2, val3,...) 用给定的数据创建一个struct, filed名字为col1,col2,col3...
named_struct (name1,val1,name2,val2,...) 用给定的filed名字和数据创建 struct
array (val1, val2,val3,...) 用给定的数据创建数组
create_union (tag, val1, val2,...) 创建一个union, 指向tag
复杂类型操作符 (Operators on Complex Types)
A[n] A是一个array, 返回array的第n个元素,下标从0开始
M[key] M是一个map, 返回map的key对应的值
S.x S是一个struct,返回struct的filed名字为x的值
内建函数(Built-in Functions)
数学函数
当参数有NULL时,会返回NULL,(PS.此处很坑爹...)
round(DOUBLE a)、round(DOUBLE a, INT d) 四舍五入d位小数,d缺省则返回bigint类型
floor(DOUBLE a) 向下取整,舍去小数
ceil(DOUBLE a)、ceiling(DOUBLE a) 向上取整
rand(), rand(INT seed) 产生一列随机数
exp(DOUBLE a), exp(DECIMAL a) 计算e的a次方
ln(DOUBLE a), ln(DECIMAL a) 计算a的自然对数
log10(DOUBLE a), log10(DECIMAL a), og2(DOUBLE a), log2(DECIMAL a) 计算a的对数,底为10或者2
log(DOUBLE base, DOUBLE a), log(DECIMAL base, DECIMAL a) 计算a的对数,底为base
pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p) 计算a的p次方
sqrt(DOUBLE a), sqrt(DECIMAL a) 计算a的平方根
bin(BIGINT a) 返回a的二进制数
hex(BIGINT a) hex(STRING a) hex(BINARY a) 返回a的16进制数
unhex(STRING a) 返回16进制的反
conv(BIGINT num, INT from_base, INT to_base), conv(STRING num, INT from_base, INT to_base) 将num从from_base转换成to_base
abs(DOUBLE a) 返回绝对值
pmod(INT a, INT b), pmod(DOUBLE a, DOUBLE b) 返回a模b的值
sin(DOUBLE a), sin(DECIMAL a)
asin(DOUBLE a), asin(DECIMAL a)
cos(DOUBLE a), cos(DECIMAL a)
acos(DOUBLE a), acos(DECIMAL a)
tan(DOUBLE a), tan(DECIMAL a)
atan(DOUBLE a), atan(DECIMAL a)
degrees(DOUBLE a), degrees(DECIMAL a) 将a从弧度转换为角度
radians(DOUBLE a), radians(DOUBLE a) 将a从角度转换为弧度
positive(INT a), positive(DOUBLE a) 返回a
negative(INT a), negative(DOUBLE a) 返回-a
sign(DOUBLE a), sign(DECIMAL a) 取a的符号,‘1.0‘表示正,‘-1.0‘表示负,否则‘0.0‘
e(), pi()
factorial(INT a) 返回a的因子?在[0..20]之间
cbrt(DOUBLE a) 返回立方根
shiftleft(INT a), shiftleft(BIGINT a)
shiftright(INT a), shiftright(BIGINT a)
shiftrightunsigned(INT a), shiftrightunsigned(BIGINT a)
采集函数(Collection Functions)
size(Map<K.V>) 返回map的元素个数
size(Array<T>) 返回array的元素个数
map_keys(Map<K.V>) 返回一个数组,元素是map的key
map_values(Map<K.V>) 返回一个数组,元素是map的值
array_contains(Array<T>, value) Array是否包含,Value
sort_array(Array<T>) 排序
类型转化函数(Type Conversion Functions)
binary(string|binary)
cast(expr as <type>) 将expr的记过转换为type类型,如果转换失败返回NULL,如果type为boolean,非空是返回TRUE
日期函数(Date Functions)