hdfs目录创建hive表

简介

针对已经存放在hdfs上的文件,创建hive表。这里推荐创建外表,因为hive外表被删除,对应目录的数据不会被清除。

步骤

step1. 根据hdfs的数据字段,创建hive表。

CREATE EXTERNAL TABLE if not exists push_log(
     ip STRING COMMENT 'IP Address of the User', 
     imei STRING,
     gameid STRING, 
     channelid STRING,
     lan STRING 'language',
     country STRING COMMENT 'country of origination',
     mac STRING,
     ver STRING,
     phonetype STRING,
     sver STRING,
     tver STRING,
     plmn STRING)
 COMMENT 'This is the staging push log table'
 PARTITIONED BY (hostid STRING, dayid STRING) **# 指定分区**
 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001'
 STORED AS TEXTFILE
 LOCATION '/user/data/push';
若该表有分区,则在创建时指定分区,这点很重要。
虽然创建了分区,分区里面也有数据,但是这时候hive表依然不能识别分区数据。还需要添加分区操作
step2. 添加分区(更贴切说,应该是指定分区)

alter table push_log add partition(hostid='$hostid', dayid='$dayid') location '/user/data/push/$hostid/$dayid';

完成上面操作后,这时候从hive中就能读取到添加的分区数据,当然如果是lzo文件的话,还需要修改FileFormat,详见上篇文章

总结

若有任何问题和建议,可以留言讨论。
在操作过程中,发现了一些提高工作效率的方法。比如批量生成lzo的索引方式(详见上篇文章)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值