Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别(二)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别(二)

3.2 逻辑运算与数学运算


加法操作: +


减法操作: -


乘法操作: *


除法操作: /


取余操作: %


位与操作: &


位或操作: |


位异或操作: ^


位取反操作: ~


逻辑与操作: AND


逻辑或操作: OR


逻辑非操作: NOT


取整函数: round


指定精度取整函数: round


向下取整函数: floor


向上取整函数: ceil


向上取整函数: ceiling


取随机数函数: rand


自然指数函数: exp


以10为底对数函数: log10


以2为底对数函数: log2


对数函数: log


幂运算函数: pow


幂运算函数: power


开平方函数: sqrt


二进制函数: bin


十六进制函数: hex


反转十六进制函数: unhex


进制转换函数: conv


绝对值函数: abs


正取余函数: pmod


正弦函数: sin


反正弦函数: asin


余弦函数: cos


反余弦函数: acos


positive函数: positive


negative函数: negative


UNIX时间戳转日期函数: from_unixtime


获取当前UNIX时间戳函数: unix_timestamp


日期转UNIX时间戳函数: unix_timestamp


指定格式日期转UNIX时间戳函数: unix_timestamp


日期时间转日期函数: to_date


日期转年函数: year


日期转月函数: month


日期转天函数: day


日期转小时函数: hour


日期转分钟函数: minute


日期转秒函数: second


日期转周函数: weekofyear


日期比较函数: datediff


日期增加函数: date_add


日期减少函数: date_sub


If函数: if


非空查找函数: COALESCE


条件判断函数:CASE


字符串长度函数:length


字符串反转函数:reverse


字符串连接函数:concat


带分隔符字符串连接函数:concat_ws


字符串截取函数:substr,substring


字符串截取函数:substr,substring


字符串转大写函数:upper,ucase


字符串转小写函数:lower,lcase


去空格函数:trim


左边去空格函数:ltrim


右边去空格函数:rtrim


正则表达式替换函数:regexp_replace


正则表达式解析函数:regexp_extract


URL解析函数:parse_url


json解析函数:get_json_object


空格字符串函数:space


重复字符串函数:repeat


首字符ascii函数:ascii


左补足函数:lpad


右补足函数:rpad


分割字符串函数: split


集合查找函数: find_in_set


Map类型构建: map


Struct类型构建: struct


array类型构建: array


array类型访问: A[n]


map类型访问: M[key]


struct类型访问: S.x


Map类型长度函数: size(Map<K.V>)


array类型长度函数: size(Array<T>)


类型转换函数


1、加法操作: +


语法: A + B


操作类型:所有数值类型


说明:返回A与B相加的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。比如,int + int 一般结果为int类型,而int + double 一般结果为double类型


举例:hive> select 1 + 9 from dual; 10


2、减法操作: -


语法: A – B


操作类型:所有数值类型


说明:返回A与B相减的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。比如,int – int 一般结果为int类型,而int – double 一般结果为double类型


举例:hive> select 10 – 5 from dual;5


3、乘法操作 : *


语法: A * B


操作类型:所有数值类型


说明:返回A与B相乘的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。注意,如果A乘以B的结果超过默认结果类型的数值范围,则需要通过cast将结果转换成范围更大的数值类型


举例:hive> select 40 * 5 from dual;200


4、除法操作 : /


语法: A / B


操作类型:所有数值类型


说明:返回A除以B的结果。结果的数值类型为double


举例:hive> select 40 / 5 from dual;8.0


注意: hive 中最高精度的数据类型是 double, 只精确到小数点后 16 位,在做除法运算的时候要 特别注意:


hive>select ceil(28.0/6.99999999999999) from dual limit 1; 4
hive>select ceil(28.0/6.99999999999999) from dual limit 1; 5


5、取余操作 : %


语法: A % B


操作类型:所有数值类型


说明:返回A除以B的余数。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。


举例:hive> select 41 % 5 from dual; 1
hive> select 8.4 % 4 from dual; 0.40000000000000036


注意:精度在 hive 中是个很大的问题,类似这样的操作最好通过round 指定精度


hive> select round(8.4 % 4 , 2) from dual;0.4


6、位与操作 : &


语法: A & B


操作类型:所有数值类型


说明:返回A和B按位进行与操作的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。


举例:hive> select 4 & 8 from dual;0
hive> select 6 & 4 from dual;4


7、位或操作 : |


语法: A | B


操作类型:所有数值类型


说明:返回A和B按位进行或操作的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。


举例:hive> select 4 | 8 from dual; 12
hive> select 6 | 8 from dual; 14

8、位异或操作 : ^


语法: A ^ B


操作类型:所有数值类型


说明:返回A和B按位进行异或操作的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。


举例:hive> select 4 ^ 8 from dual; 12
hive> select 6 ^ 4 from dual; 2


9、位取反操作 : ~


语法: ~A


操作类型:所有数值类型


说明:返回A按位取反操作的结果。结果的数值类型等于A的类型。


举例:hive> select ~6 from dual; -7
hive> select ~4 from dual; -5


10、逻辑与操作 : AND


语法: A AND B


操作类型:boolean


说明:如果A和B均为TRUE,则为TRUE;否则为FALSE。如果A为NULL或B为NULL,则为NULL


举例:hive> select 1 from dual where 1=1 and 2=2; 1


11、逻辑或操作 : OR


语法: A OR B


操作类型:boolean


说明:如果A为TRUE,或者B为TRUE,或者A和B均为TRUE,则为TRUE;否则为FALSE


举例:hive> select 1 from dual where 1=2 or 2=2; 1


12、逻辑非操作 : NOT


语法: NOT A


操作类型:boolean


说明:如果A为FALSE,或者A为NULL,则为TRUE;否则为FALSE


举例:hive> select 1 from dual where not 1=2;


13、取整函数 : round


语法: round(double a)


返回值: BIGINT


说明: 返回double类型的整数值部分 (遵循四舍五入)


举例:hive> select round(3.1415926) from dual; 3
hive> select round(3.5) from dual; 4
hive> create table dual as select round(9542.158) fromdual;
hive> describe dual; _c0 bigint


14、指定精度取整函数 : round


语法: round(double a, int d)


返回值: DOUBLE


说明: 返回指定精度d的double类型


举例: hive> selectround(3.1415926,4) from dual; 3.1416


15、向下取整函数 : floor


语法: floor(double a)


返回值: BIGINT


说明: 返回等于或者小于该double变量的最大的整数


举例:hive> select floor(3.1415926) from dual; 3
hive> select floor(25) from dual; 25


16、向上取整函数 : ceil


语法: ceil(double a)


返回值: BIGINT


说明: 返回等于或者大于该double变量的最小的整数


举例:hive> select ceil(3.1415926) from dual; 4
hive> select ceil(46) from dual; 46

17、向上取整函数 : ceiling


语法: ceiling(double a)


返回值: BIGINT


说明: 与ceil功能相同


举例:hive> select ceiling(3.1415926) from dual; 4
hive> select ceiling(46) from dual; 46


18、取随机数函数 : rand


语法: rand(),rand(int seed)


返回值: double


说明: 返回一个0到1范围内的随机数。如果指定种子seed,则会等到一个稳定的随机数序列


举例:hive> select rand() from dual; 0.5577432776034763


19、自然指数函数 : exp


语法: exp(double a)


返回值: double


说明: 返回自然对数e的a次方


举例:hive> select exp(2) from dual; 7.38905609893065


20、自然对数函数: ln


语法: ln(double a)


返回值: double


说明: 返回a的自然对数



21、以 10 为底对数函数 :log10


语法: log10(double a)


返回值: double


说明: 返回以10为底的a的对数


举例:hive> select log10(100) from dual;2.0


22、以 2 为底对数函数 :log2


语法: log2(double a)


返回值: double


说明: 返回以2为底的a的对数


举例:hive> select log2(8) from dual; 3.0


23、对数函数 : log


语法: log(double base, double a)


返回值: double


说明: 返回以base为底的a的对数


举例:hive> select log(4,256) from dual; 4.0


24、幂运算函数 : pow


语法: pow(double a, double p)


返回值: double


说明: 返回a的p次幂


举例:hive> select pow(2,4) from dual; 16.0


25、开平方函数 : sqrt


语法: sqrt(double a)


返回值: double


说明: 返回a的平方根


举例:hive> select sqrt(16) from dual; 4.0


26、二进制函数 : bin


语法: bin(BIGINT a)


返回值: string


说明: 返回a的二进制代码表示


举例:hive> select bin(7) from dual; 111


27、十六进制函数 : hex


语法: hex(BIGINT a)


返回值: string


说明: 如果变量是int类型,那么返回a的十六进制表示;如果变量是string类型,则返回该字符串的十六进制表示


举例:hive> select hex(17) from dual; 11
hive> select hex(‘abc’) from dual; 616263


28、反转十六进制函数 : unhex


语法: unhex(string a)


返回值: string


说明: 返回该十六进制字符串所代码的字符串


举例: hive> selectunhex(‘616263’) from dual; abc
hive> select unhex(‘11’) from dual; -
hive> select unhex(616263) from dual; abc


29、进制转换函数 : conv


语法: conv(BIGINT num, int from_base, int to_base)


返回值: string


说明: 将数值num从from_base进制转化到to_base进制


举例:hive> select conv(17,10,16) from dual; 11
hive> select conv(17,10,2) from dual; 10001


30、绝对值函数 : abs


语法: abs(double a) abs(int a)


返回值: double int


说明: 返回数值a的绝对值


举例:hive> select abs(-3.9) from dual; 3.9
hive> select abs(10.9) from dual; 10.9


31、正取余函数 : pmod


语法: pmod(int a, int b),pmod(double a, double b)


返回值: int double


说明: 返回正的a除以b的余数


举例:hive> select pmod(9,4) from dual; 1
hive> select pmod(-9,4) from dual; 3


32、正弦函数 : sin


语法: sin(double a)


返回值: double


说明: 返回a的正弦值


举例:hive> select sin(0.8) from dual; 0.7173560908995228


33、反正弦函数 : asin


语法: asin(double a)


返回值: double


说明: 返回a的反正弦值


举例:hive> select asin(0.7173560908995228) from dual; 0.8


34、余弦函数 : cos


语法: cos(double a)


返回值: double


说明: 返回a的余弦值


举例:hive> select cos(0.9) from dual; 0.6216099682706644


35、反余弦函数 : acos


语法: acos(double a)


返回值: double


说明: 返回a的反余弦值


举例:hive> select acos(0.6216099682706644) from dual; 0.9


36、positive 函数 : positive


语法: positive(int a), positive(double a)


返回值: int double


说明: 返回a


举例: hive> selectpositive(-10) from dual; -10
hive> select positive(12) from dual; 12


37、negative 函数 : negative


语法: negative(int a), negative(double a)


返回值: int double


说明: 返回-a


举例:hive> select negative(-5) from dual; 5
hive> select negative(8) from dual; -8


38、UNIX 时间戳转日期函数 : from_unixtime


语法: from_unixtime(bigint unixtime[, string format])


返回值: string


说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式


举例:hive> select from_unixtime(1323308943,'yyyyMMdd')from dual; 20111208

39、获取当前 UNIX 时间戳函数 : unix_timestamp


语法: unix_timestamp()


返回值: bigint


说明: 获得当前时区的UNIX时间戳


举例:hive> select unix_timestamp() from dual; 1323309615


40、日期转 UNIX 时间戳函数 : unix_timestamp


语法: unix_timestamp(string date)


返回值: bigint


说明: 转换格式为"yyyy-MM-ddHH:mm:ss"的日期到UNIX时间戳。如果转化失败,则返回0。


举例:hive> select unix_timestamp('2011-12-07 13:01:03')from dual; 1323234063


41、指定格式日期转 UNIX 时间戳函数 :unix_timestamp


语法: unix_timestamp(string date, string pattern)


返回值: bigint


说明: 转换pattern格式的日期到UNIX时间戳。如果转化失败,则返回0。


举例:hive> select unix_timestamp('2011120713:01:03','yyyyMMdd HH:mm:ss') from dual; 1323234063


42、日期时间转日期函数 : to_date


语法: to_date(string timestamp)


返回值: string


说明: 返回日期时间字段中的日期部分。


举例:hive> select to_date('2011-12-08 10:03:01') fromdual;


43、日期转年函数 : year


语法: year(string date)


返回值: int


说明: 返回日期中的年。


举例:hive> select year('2011-12-08 10:03:01') fromdual;2011
hive> select year('2012-12-08') from dual; 2012

44、日期转月函数 : month


语法: month (string date)


返回值: int


说明: 返回日期中的月份。


举例:hive> select month('2011-12-08 10:03:01') fromdual;12
hive> select month('2011-08-08') from dual; 8

45、日期转天函数 : day


语法: day (string date)


返回值: int


说明: 返回日期中的天。


举例:hive> select day('2011-12-08 10:03:01') from dual; 8
hive> select day('2011-12-24') from dual; 24


46、日期转小时函数 : hour


语法: hour (string date)


返回值: int


说明: 返回日期中的小时。


举例:hive> select hour('2011-12-08 10:03:01') fromdual;10


47、日期转分钟函数 : minute


语法: minute (string date)


返回值: int


说明: 返回日期中的分钟。


举例:hive> select minute('2011-12-08 10:03:01') fromdual; 3


48、日期转秒函数 : second


语法: second (string date)


返回值: int


说明: 返回日期中的秒。


举例:hive> select second('2011-12-08 10:03:01') fromdual; 1


49、日期转周函数 : weekofyear


语法: weekofyear (string date)


返回值: int


说明: 返回日期在当前的周数。


举例:hive> select weekofyear('2011-12-08 10:03:01') fromdual;49


50、日期比较函数 : datediff


语法: datediff(string enddate, string startdate)


返回值: int


说明: 返回结束日期减去开始日期的天数。


举例:hive> select datediff('2012-12-08','2012-05-09')from dual; 213


51、日期增加函数 : date_add


语法: date_add(string startdate, int days)


返回值: string


说明: 返回开始日期startdate增加days天后的日期。


举例:hive> select date_add('2012-12-08',10) from dual;


52、日期减少函数 : date_sub


语法: date_sub (string startdate, int days)


返回值: string


说明: 返回开始日期startdate减少days天后的日期。


举例:hive> select date_sub('2012-12-08',10) from dual;


53、If 函数 : if


语法: if(boolean testCondition, T valueTrue, TvalueFalseOrNull)


返回值: T


说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull


举例:hive> select if(1=2,100,200) from dual; 200
hive> select if(1=1,100,200) from dual;100


54、非空查找函数 : COALESCE


语法: COALESCE(T v1, T v2, …)


返回值: T


说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL


举例:hive> select COALESCE(null,'100','50′)from dual; 100


55、条件判断函数: CASE


语法 : CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END


返回值 : T


说明:如果 a 等于 b ,那么返回 c ;如果 a 等于 d ,那么返回 e ;否则返回 f


举例:hive> Select case 100 when 50 then 'tom' when 100then 'mary' else 'tim' end from dual; mary


56、字符串长度函数: length


语法: length(string A)


返回值: int


说明:返回字符串A的长度


举例:hive> select length('abcedfg') from dual; 7


57、字符串反转函数: reverse


语法: reverse(string A)


返回值: string


说明:返回字符串A的反转结果


举例:hive> select reverse(abcedfg’) from dual; gfdecba


58、字符串连接函数: concat


语法: concat(string A, string B…)


返回值: string


说明:返回输入字符串连接后的结果,支持任意个输入字符串


举例:hive> select concat(‘abc’,'def’,'gh’) from dual;
abcdefgh


59、带分隔符字符串连接函数: concat_ws


语法: concat_ws(string SEP, string A, string B…)


返回值: string


说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符


举例:hive> select concat_ws(',','abc','def','gh') fromdual;
abc,def,gh


60、字符串截取函数: substr,substring


语法: substr(string A, int start),substring(string A, intstart)


返回值: string


说明:返回字符串A从start位置到结尾的字符串


举例:hive> select substr('abcde',3) from dual; cde
hive> select substring('abcde',3) from dual; cde
hive> selectsubstr('abcde',-1) from dual; e


61、字符串截取函数: substr,substring


语法: substr(string A, int start, int len),substring(stringA, int start, int len)


返回值: string


说明:返回字符串A从start位置开始,长度为len的字符串


举例:hive> select substr('abcde',3,2) from dual; cd
hive> select substring('abcde',3,2) from dual; cd
hive>select substring('abcde',-2,2) from dual; de


62、字符串转大写函数: upper,ucase


语法: upper(string A) ucase(string A)


返回值: string


说明:返回字符串A的大写格式


举例:hive> select upper('abSEd') from dual; ABSED
hive> select ucase('abSEd') from dual; ABSED


63、字符串转小写函数: lower,lcase


语法: lower(string A) lcase(string A)


返回值: string


说明:返回字符串A的小写格式


举例:hive> select lower('abSEd') from dual; absed
hive> select lcase('abSEd') from dual; absed


64、去空格函数: trim


语法: trim(string A)


返回值: string


说明:去除字符串两边的空格


举例:hive> select trim(' abc ') from dual; abc


65、左边去空格函数: ltrim


语法: ltrim(string A)


返回值: string


说明:去除字符串左边的空格


举例:hive> select ltrim(' abc ') from dual; abc


64、右边去空格函数: rtrim


语法: rtrim(string A)


返回值: string


说明:去除字符串右边的空格


举例:hive> select rtrim(' abc ') from dual; abc


65、正则表达式替换函数: regexp_replace


语法: regexp_replace(string A, string B, string C)


返回值: string


说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似oracle中的regexp_replace函数。


举例:hive> select regexp_replace('foobar', 'oo|ar', '')from dual; fb


66、正则表达式解析函数: regexp_extract


语法: regexp_extract(string subject, string pattern, intindex)


返回值: string


说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。


举例:hive> select regexp_extract('foothebar','foo(.*?)(bar)', 1) from dual; the
hive> select regexp_extract('foothebar','foo(.*?)(bar)', 2) from dual; bar
hive> select regexp_extract('foothebar','foo(.*?)(bar)', 0) from dual; foothebar


注意,在有些情况下要使用转义字符,下面的等号要用双竖线转 义,这是 java 正则表达式的规则。


select data_field,
regexp_extract(data_field,'.*?bgStart\=(&+)',1)as aaa,
regexp_extract(data_field,'.*?contentLoaded_headStart\=(&+)',1)as bbb,
regexp_extract(data_field,'.*?AppLoad2Req\=(&+)',1)as ccc
from pt_nginx_loginlog_st
where pt = '2012-03-26' limit 2;


67、URL 解析函数: parse_url


语法: parse_url(string urlString, string partToExtract [,string keyToExtract])


返回值: string


说明:返回URL中指定的部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.


举例:


hive>selectparse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') fromdual; facebook.com
hive> selectparse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY','k1') from dual; v1


68、json 解析函数: get_json_object


语法: get_json_object(string json_string, string path)


返回值: string


说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。


举例:


hive> select get_json_object('{"store":
> {"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],
> "bicycle":{"price":19.95,"color":"red"}
> },
> "email":"amy@only_for_json_udf_test.net",
> "owner":"amy"
> }
> ','$.owner') from dual;
amy


69、空格字符串函数: space


语法: space(int n)


返回值: string


说明:返回长度为n的字符串


举例:


hive> select space(10) from dual;
hive> select length(space(10)) from dual; 10


70、重复字符串函数: repeat


语法: repeat(string str, int n)


返回值: string


说明:返回重复n次后的str字符串


举例:hive> select repeat('abc',5) from dual;abcabcabcabcabc


71、首字符 ascii 函数: ascii


语法: ascii(string str)


返回值: int


说明:返回字符串str第一个字符的ascii码


举例:hive> select ascii('abcde') from dual; 97

72、左补足函数: lpad


语法: lpad(string str, int len, string pad)


返回值: string


说明:将str进行用pad进行左补足到len位


举例:hive> select lpad('abc',10,'td') from dual;tdtdtdtabc


注意:与 GP , ORACLE 不同, pad 不能默认


73、右补足函数: rpad


语法: rpad(string str, int len, string pad)


返回值: string


说明:将str进行用pad进行右补足到len位


举例:hive> select rpad('abc',10,'td') from dual;abctdtdtdt


74、分割字符串函数 : split


语法: split(stringstr, string pat)


返回值: array


说明: 按照pat字符串分割str,会返回分割后的字符串数组


举例:


hive> select split('abtcdtef','t') from dual;
["ab","cd","ef"]


75、集合查找函数 : find_in_set


语法: find_in_set(string str, string strList)


返回值: int


说明: 返回str在strlist第一次出现的位置,strlist是用逗号分割的字符串。如果没有找该str字符,则返回0


举例:hive> select find_in_set('ab','ef,ab,de') fromdual;2
hive> select find_in_set('at','ef,ab,de') from dual;0


76、集合统计函数


语法: count(*), count(expr), count(DISTINCT expr[, expr_.])


返回值: int


说明: count(*)统计检索出的行的个数,包括NULL值的行;count(expr)返回指定字段的非空值的个数;count(DISTINCTexpr[, expr_.])返回指定字段的不同的非空值的个数


举例:


hive> select count(*) from dual; 20
hive> select count(distinct t) from dual; 10


77、总和统计函数 : sum


语法: sum(col), sum(DISTINCT col)


返回值: double


说明: sum(col)统计结果集中col的相加的结果;sum(DISTINCT col)统计结果中col不同值相加的结果


举例:


hive> select sum(t) from dual; 100
hive> select sum(distinct t) from dual; 70


78、平均值统计函数 : avg


语法: avg(col), avg(DISTINCT col)


返回值: double


说明: avg(col)统计结果集中col的平均值;avg(DISTINCT col)统计结果中col不同值相加的平均值


举例:

hive> select avg(t) from dual; 50
hive> select avg (distinct t) from dual; 30


79、最小值统计函数 : min


语法: min(col)


返回值: double


说明: 统计结果集中col字段的最小值


举例:


hive> select min(t) from dual; 20


80、最大值统计函数 : max


语法: maxcol)


返回值: double


说明: 统计结果集中col字段的最大值


举例:hive> select max(t) from dual; 120


81、Map 类型构建 : map


语法: map (key1, value1, key2, value2, …)


说明:根据输入的key和value对构建map类型


举例:


hive> Create table alex_testas select map('100','tom','200','mary') as t from dual;
hive> describe alex_test;
t map<string,string>
hive> select t from alex_test;
{"100":"tom","200":"mary"}


82、Struct 类型构建 : struct


语法: struct(val1, val2, val3, …)


说明:根据输入的参数构建结构体struct类型


举例:


hive> create table alex_test as selectstruct('tom','mary','tim') as t from dual;
hive> describe alex_test;
t structcol1:string,col2:string,col3:string
hive> select t from alex_test;
{"col1":"tom","col2":"mary","col3":"tim"}


83、array 类型构建 : array


语法: array(val1, val2, …)


说明:根据输入的参数构建数组array类型


举例:


hive> create table alex_test as selectarray("tom","mary","tim") as t from dual;
hive> describe alex_test;
t array<string>
hive> select t from alex_test;
["tom","mary","tim"]

84、array 类型访问 : A[n]


语法: A[n]


操作类型: A为array类型,n为int类型


说明:返回数组A中的第n个变量值。数组的起始下标为0。比如,A是个值为['foo','bar']的数组类型,那么A[0]将返回'foo',而A[1]将返回'bar'


举例:


hive> create table alex_test as selectarray("tom","mary","tim") as t from dual;
hive> select t[0],t[1],t[2] from alex_test; tom mary tim


85、map 类型访问 : M[key]


语法: M[key]


操作类型: M为map类型,key为map中的key值


说明:返回map类型M中,key值为指定值的value值。比如,M是值为{'f' -> 'foo', 'b' -> 'bar', 'all' -> 'foobar'}的map类型,那么M['all']将会返回'foobar'


举例:


hive> Create table alex_test as selectmap('100','tom','200','mary') as t from dual;
hive> select t['200'],t['100'] from alex_test; mary tom


86、struct 类型访问 : S.x


语法: S.x


操作类型: S为struct类型


说明:返回结构体S中的x字段。比如,对于结构体struct foobar {int foo, int bar},foobar.foo返回结构体中的foo字段


举例:


hive> create table alex_test as selectstruct('tom','mary','tim') as t from dual;
hive> describe alex_test;
t structcol1:string,col2:string,col3:string
hive> select t.col1,t.col3from alex_test;
tom tim


87、Map 类型长度函数 :size(Map<K.V>)


语法: size(Map<K.V>)


返回值: int


说明: 返回map类型的长度


举例:hive> select size(map('100','tom','101','mary'))from dual; 2


88、array 类型长度函数 :size(Array<T>)


语法: size(Array<T>)


返回值: int


说明: 返回array类型的长度


举例:hive> select size(array('100','101','102','103'))from dual; 4


89、类型转换函数


类型转换函数: cast


语法: cast(expr as <type>)


返回值: Expected "=" to follow "type"


说明: 返回array类型的长度


举例:hive> select cast(1 as bigint) from dual; 1


4 Hive JDBC


4.1 基本操作对象的介绍


1、Connection

说明:与Hive连接的Connection对象


Hive的连接


jdbc:hive://IP:10000/default“



获取Connection的方法


DriverManager.getConnection("jdbc:hive://IP:10000/default","", "");


2、Statement


说明: 用于执行语句


创建方法


Statementstmt = con.createStatement();


主要方法


executeQuery


execute


3、ResultSet


说明:用来存储结果集


创建方法


stmt.executeQuery


主要方法


getString()


4、特殊类型的处理


Array


Map


Struct



4.2 datafile写操作


try {
Class.forName(driverName);
Connection con =DriverManager.getConnection("jdbc:hive://IP:10000/default","", "");
Statement stmt =con.createStatement();
String sql = "show tables";
// show tables
System.out.println("Running:" + sql);
ResultSet res =stmt.executeQuery(sql);
if (res.next()) {
System.out.println(res.getString(1));
}


4.3 基于Hive的数据库连接池


使用DataSource作为数据源的实现


DBConnectionManager采用单例模式


提供获得连接,关闭连接的方法


setupDataSource()
DBConnectionManagergetInstance()
close(Connectionconn)
synchronizedConnection getConnection()


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
71 2
|
2月前
|
SQL 分布式计算 Hadoop
手把手的教你搭建hadoop、hive
手把手的教你搭建hadoop、hive
166 1
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
89 3
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
53 2
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
105 0
|
6月前
|
存储 大数据 分布式数据库
使用Apache HBase进行大数据存储:技术解析与实践
【6月更文挑战第7天】Apache HBase,一个基于HDFS的列式存储NoSQL数据库,提供高可靠、高性能的大数据存储。其特点是列式存储、可扩展至PB级数据、低延迟读写及多版本控制。适用场景包括大规模数据存储、实时分析、日志存储和推荐系统。实践包括集群环境搭建、数据模型设计、导入、查询及性能优化。HBase在大数据存储领域扮演关键角色,未来有望在更多领域发挥作用。
|
6月前
|
存储 SQL 分布式计算
技术心得记录:深入学习HBase架构原理
技术心得记录:深入学习HBase架构原理
|
6月前
|
存储 缓存 分布式计算
必知的技术知识:Hbase配置(伪分布式模式)
必知的技术知识:Hbase配置(伪分布式模式)
702 0
|
7月前
|
存储 分布式计算 Java
大数据存储技术(3)—— HBase分布式数据库
大数据存储技术(3)—— HBase分布式数据库
1821 0
|
7月前
|
SQL 存储 分布式计算
基于Hadoop数据仓库Hive1.2部署及使用
基于Hadoop数据仓库Hive1.2部署及使用