首页 > 其他 > 详细

Hive学习之路 (十)Hive的高级操作

时间:2018-04-10 23:04:15      阅读:224      评论:0      收藏:0      [点我收藏+]

一、负责数据类型

1、array

 现有数据如下:

1 huangbo guangzhou,xianggang,shenzhen a1:30,a2:20,a3:100 beijing,112233,13522334455,500
2 xuzheng xianggang b2:50,b3:40 tianjin,223344,13644556677,600
3 wangbaoqiang beijing,zhejinag c1:200 chongqinjg,334455,15622334455,20

建表语句

use class;
create table cdt(
id int, 
name string, 
work_location array<string>, 
piaofang map<string,bigint>, 
address struct<location:string,zipcode:int,phone:string,value:int>) 
row format delimited 
fields terminated by "\t" 
collection items terminated by "," 
map keys terminated by ":" 
lines terminated by "\n";

技术分享图片

导入数据

0: jdbc:hive2://hadoop3:10000> load data local inpath "/home/hadoop/cdt.txt" into table cdt;

查询语句

select * from cdt;

技术分享图片

select name from cdt;

技术分享图片

select work_location from cdt;

技术分享图片

select work_location[0] from cdt;

技术分享图片

select work_location[1] from cdt;

技术分享图片

2、map

建表语句、导入数据同1

查询语句

select piaofang from cdt;

技术分享图片

select piaofang["a1"] from cdt;

 技术分享图片

3、struct

建表语句、导入数据同1

查询语句

select address from cdt;

技术分享图片

select address.location from cdt;

 技术分享图片

4、uniontype

很少使用

参考资料:http://yugouai.iteye.com/blog/1849192

二、视图

1、Hive 的视图和关系型数据库的视图区别

和关系型数据库一样,Hive 也提供了视图的功能,不过请注意,Hive 的视图和关系型数据库的数据还是有很大的区别

  (1)只有逻辑视图,没有物化视图;

  (2)视图只能查询,不能 Load/Insert/Update/Delete 数据;

  (3)视图在创建时候,只是保存了一份元数据,当查询视图的时候,才开始执行视图对应的 那些子查询

2、Hive视图的创建语句

create view view_cdt as select * from cdt;

技术分享图片

3、Hive视图的查看语句

show views;
desc view_cdt;-- 查看某个具体视图的信息

技术分享图片

4、Hive视图的使用语句

select * from view_cdt;

技术分享图片

5、Hive视图的删除语句

drop view view_cdt;

技术分享图片

三、函数

1、内置函数

具体可看http://www.cnblogs.com/qingyunzong/p/8744593.html

(1)查看内置函数

show functions;

技术分享图片

(2)显示函数的详细信息

desc function substr;

技术分享图片

(3)显示函数的扩展信息

desc function extended substr;

技术分享图片

2、自定义函数UDF

当 Hive 提供的内置函数无法满足业务处理需要时,此时就可以考虑使用用户自定义函数。

UDF(user-defined function)作用于单个数据行,产生一个数据行作为输出。(数学函数,字 符串函数)

UDAF(用户定义聚集函数 User- Defined Aggregation Funcation):接收多个输入数据行,并产 生一个输出数据行。(count,max)

UDTF(表格生成函数 User-Defined Table Functions):接收一行输入,输出多行(explode)

  (1) 简单UDF示例

  (2) JSON数据解析UDF开发

  (3) Transform实现

四、特殊分隔符处理

1、使用RegexSerDe正则表达式解析

2、通过自定义InputFormat处理特殊分隔符

 

Hive学习之路 (十)Hive的高级操作

原文:https://www.cnblogs.com/qingyunzong/p/8746159.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!