分区表 UDF

本文详细介绍了Hive中的分区表概念,包括如何创建、加载数据和查询,以及二级分区表的使用。此外,还讲解了UDF的开发过程,如何将自定义函数导入Hive并进行测试。通过实例展示了如何从URL中提取销售ID的UDF函数。
摘要由CSDN通过智能技术生成
===分区表=================================================

分区表实例:按照时间来生成和管理日志文件
20160830
    ** 2016083001.log
    ** 2016083002.log
    ** 2016083003.log
    ...
20160831
    ** 2016083101.log
    ** 2016083102.log
    ...
20160901
20160902
...

--创建分区表
create table emp_part(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
)
partitioned by(date string)
row format delimited fields terminated by '\t';    

--向分区表加载数据
load data local inpath 'emp.txt' into table emp_part partition(date='20160830');
load data local inpath 'emp.txt' into table emp_part partition(date='20160831');
load data local inpath 'emp.txt' into table emp_part partition(date='20160901');

--分区表查询
hive (mydb)> select * from emp_part;
hive (mydb)> select * from emp_part where date='20160830';

----二级分区表------------------

create table if not exists track_log(
id              string,
url             string,
referer         string,
keyword         string,
type            string,
guid            string,
pageId          string,
moduleId        string,
linkId          string,
attachedInfo    string,
sessionId       string,
trackerU        string,
trackerType     string,
ip              string,
trackerSrc      string,
cookie          string,
orderCode       string,
trackTime       string,
endUserId       string,
firstLink       string,
sessionViewNo   string,
productId       string,
curMerchantId   string,
provinceId      string,
cityId          string,
fee             string,
edmActivity     string,
edmEmail        string,
edmJobId        string,
ieVersion       string,
platform        string,
internalKeyword string,
resultSum       string,
currentPage     string,
linkPosition    string,
buttonPosition  string
)
partitioned by (date string,hour string)
row format delimited fields terminated by '\t';    

--加载数据
load data local inpath '/home/tom/2015082818' into table mydb.track_log partition(date='20150828',hour='18');
load data local inpath '/home/tom/2015082819' into table mydb.track_log partition(date='20150828',hour='19');

--查询
select * from mydb.track_log where date='20150828';
select * from mydb.track_log where date='20150828' and hour='18';
select * from mydb.track_log where date='20150828' and hour='18' limit 10;

-----------

查看一个分区表有几个分区    
hive (mydb)> show partitions track_log;    
删除一个分区表的分区
hive (mydb)> alter table track_log drop partition(date='20150828',hour='19');  --同时删除HDFS上的对应分区目录

----分区表 + 外部表-----------

create external table track_log_ext(
id              string,
url             string,
referer         string,
keyword         string,
type            string,
guid            string,
pageId          string,
moduleId        string,
linkId          string,
attachedInfo    string,
s
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值