`
hugh.wangp
  • 浏览: 288776 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[陷阱]HIVE外部分区表一定要增加分区

    博客分类:
  • HIVE
阅读更多

刚开始玩HIVE外部表可能会遇到的小陷阱。

只要我们牢记外部表也是一种表就可以,普通表有分区,外部表也是有分区的。所以如果是基于分区表创建的外部表一定要对外部表执行ALTER TABLE table_name ADD PARTITION。否则是根本访问不到数据的。

例子应该会更直观:
原始的表:
hive> desc shaka_test_external;
OK
id      bigint
gender  string(分区字段)
记录:
hive> select * from shaka_test_external;
OK
0       0
1       1
2       1
基于上表的数据创建外部表:
create external table ext_shaka_test_external
like shaka_test_external
location 'hdfs://hdpnn:9000/group/hive/shaka_test_external';
如果此时直接访问数据,那么是没有记录的:

hive> show partitions ext_shaka_test_external;

OK

Time taken: 0.098 seconds

hive> select * from ext_shaka_test_external;
OK
Time taken: 0.229 seconds

陷阱来了,添加分区后就能访问了:
hive> alter table ext_shaka_test_external add partition (gender='0');
OK
Time taken: 0.18 seconds
hive> alter table ext_shaka_test_external add partition (gender='1');
OK
Time taken: 1.305 seconds
hive> select * from ext_shaka_test_external;
OK
0       0
1       1
2       1
Time taken: 0.251 seconds
hive> select * from ext_shaka_test_external where gender = '0';
OK
0       0
Time taken: 0.175 seconds


0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics