
现在要用hive分析数据,同时要保证这些数据目录不能改变,就需要hive用外表的方式与这些数据进行关联。
示例:
但是,看下文件列表
一共108个待添加的目录,这样一个个添加太累人,有没有批量添加的方法呢?
Hive有个MSCK命令,可以扫描数据分区目录,修复元信息,目录与元信息不一致时,能自动更新。
但是,数据目录必须是Hive习惯路径格式:
同时,建表时指定LOCATION为分区目录的父目录:
这时,用命令
即可自动把所有的数据按dt分区,添加到gateway_analysis中。
由于我们的目录格式不符合,只能用ADD PARTITION的方式了。
为减少工作量,写了个shell脚本,自动添加 /data/logs/gateway 目录下所有的分区目录到gateway_analysis表中:
Hive只能每15分钟到1小时添加。许多用户都有ApacheFlume、ApacheStorm或ApacheKafka这样的工具,他们使用这些工具将数据流传输到Hadoop集群中。虽然这些工具可以以每秒数百行或更多行的速度写入数据,但Hive只能每15分钟到1小时添加一次分区。
1、hive 创建外部表
create external table t_ods_test (
uid string COMMENT '用户id',
terminal string COMMENT '终端类型',
adslotid string COMMENT '广告位id',
cid string COMMENT 'cid',
amount string COMMENT '库存量',
local string COMMENT '地域',
tags string COMMENT '标签' )
partitioned by (year string,month string,day string) row format delimited fields terminated by '\t'
STORED AS TEXTFILE location '/user/qgw/hh/app/usertagview'
2、hive 外部表,增加分区
alter table t_ods_test add partition (year='2017', month='10', day='18') location '2017/10/18'
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)