hive external table partition 关联HDFS数据

EXTERNAL 外部表 在建表的时候制定一个指向实际数据的路径(LOCATION)
hive创建内部表时,会将数据移动到数据仓库指向的路径;
          创建外部表时,仅记录数据所在的路径,不对数据的位置做任何改变,
在删除表的时候:
    内部表的元数据和数据会被一起删除,

    而外部表只删除元数据,不删除数据。


HDFS中已经导入了城市日期数据文件。

/user/songwei/cityFile/visitDate=2011-10-23

/user/songwei/cityFile/visitDate=2011-10-24

创建外部表:

create external table test1(ip STRING,city STRING) partitioned by(visitDate STRING)
row format delimited fields terminated by '\t' STORED AS TEXTFILE location '/user/songwei/cityFile'

在hive中执行:

select count(*) from test1 ;

没有任何返回结果。

这是因为hive并不会自动关联hdfs中指定目录的partitions目录。

需要通过:

alter table test1 add partition (visitDate=2011-10-23);

alter table test1 add partition(y='2014',m='05',d='01') location '2014/05/01';

进行分区与分区数据的关联。

此时可以通过查找hive对应的db的meta数据进行查看。

查找test1表:

select * from TBLS where TBL_NAME='test1'

找出表ID

查找该表对应的分区信息:

select * from PARTITIONS where tbl_id=1;

能够查到通过alter table test1 add partitions(visitDate=2011-10-23)添加的分区信息。

来源: http://blog.csdn.net/anyoneking/article/details/6906300

可以通过如下语句转换外部表和内部表

alter table tablePartition set TBLPROPERTIES ('EXTERNAL'='TRUE');  //内部表转外部表
alter table tablePartition set TBLPROPERTIES ('EXTERNAL'='FALSE');  //外部表转内部表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值