大数据离线处理—hive动态分区
张军 2018-03-28 来源 : 阅读 765 评论 0

摘要:实验目的 1. 验证对分区表进行动态分区插入功能 2. 验证是否可以使用load进行动态分区插入 实验步骤 1. 在本地文件/home/grid/a.txt中写入以下4行数据: aaa,US,CA aaa,US,CB bbb,CA,BB bbb,CA,BC

实验目的
1. 验证对分区表进行动态分区插入功能
2. 验证是否可以使用load进行动态分区插入

实验步骤
1. 在本地文件/home/grid/a.txt中写入以下4行数据:
aaa,US,CA
aaa,US,CB
bbb,CA,BB
bbb,CA,BC

2. 建立非分区表并加载数据

[sql] view plain copy
1.  CREATE TABLE t1 (name STRING, cty STRING, st STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';  
2.  LOAD DATA LOCAL INPATH '/home/grid/a.txt' INTO TABLE t1;    
3.  SELECT * FROM t1;    
4.  dfs -ls /user/hive/warehouse/test.db/t1;

执行命令及结果如图1所示。

大数据离线处理—hive动态分区

3. 建立外部分区表并动态加载数据

[sql] view plain copy
1.  CREATE EXTERNAL TABLE t2 (name STRING) PARTITIONED BY (country STRING, state STRING);    
2.    
3.  set hive.exec.dynamic.partition=true;  
4.  set hive.exec.dynamic.partition.mode=nonstrict;  
5.  set hive.exec.max.dynamic.partitions.pernode=1000;  
6.  INSERT INTO TABLE t2 PARTITION (country, state) SELECT name, cty, st FROM t1;  
7.  INSERT INTO TABLE t2 PARTITION (country, state) SELECT name, cty, st FROM t1;  
8.    
9.  SELECT * FROM t2;    
10. dfs -ls /user/hive/warehouse/test.db/t2/;

执行命令及结果如图2所示。

大数据离线处理—hive动态分区

可以看到,向内部分区表中加载了8条数据,动态建立了目录。

4. 编辑a.txt,使其有以下4行数据,然后在执行下面的命令。
aaa,US,CD
aaa,US,CE
ccc,CB,BB
ccc,CB,BC

[sql] view plain copy
1.  LOAD DATA LOCAL INPATH '/home/grid/a.txt' OVERWRITE INTO TABLE t1;  
2.  INSERT OVERWRITE TABLE t2 PARTITION (country, state) SELECT name, cty, st FROM t1;  
3.  SELECT * FROM t2;    
4.  dfs -ls /user/hive/warehouse/test.db/t2/;   
5.  dfs -ls /user/hive/warehouse/test.db/t2/country=US;

执行命令及结果如图3所示。

大数据离线处理—hive动态分区

可以看到,现在表中有12条数据,OVERWRITE并没有覆盖原来的分区,而是追加了4条数据,并且动态建立了新的分区目录。
再次执行一次下面的命令:

[sql] view plain copy
1.  INSERT OVERWRITE TABLE t2 PARTITION (country, state) SELECT name, cty, st FROM t1;  
2.  SELECT * FROM t2;    
3.  dfs -ls /user/hive/warehouse/test.db/t2/;   
4.  dfs -ls /user/hive/warehouse/test.db/t2/country=US;

执行命令及结果如图4所示。

大数据离线处理—hive动态分区

可以看到,现在表中还是12条数据,分区目录也没有变化。

在动态分区插入上,内外部分区表的行为相同,实验从略。

5. 使用LOAD做动态分区插入

[sql] view plain copy
1.  LOAD DATA LOCAL INPATH '/home/grid/a.txt' INTO TABLE t2 PARTITION (country, state);

执行命令及结果如图5所示。大数据离线处理—hive动态分区

可以看到,load命令不支持动态分区插入。

总结:
1. OVERWRITE不会删除已有的分区目录,只会追加新的分区,并覆盖已有分区的非分区数据。
2. 不能使用load进行动态分区插入

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 1
看完这篇文章有何感觉?已经有1人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

10年项目开发经验,精通pc、mobile平台软件开发主流技术和框架

  • 7
    文章
  • 2110
    人气
  • 85%
    受欢迎度

已有20人表明态度,85%喜欢该老师!

进入TA的空间
名师指导 直通车
  • 索取资料 索取资料 索取资料
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
大数据之Kafka Consumer端的一些解惑
经验技巧 100% 的用户喜欢
大数据离线处理—hive实用教学
经验技巧 0% 的用户喜欢
大数据离线处理—Hive实战
经验技巧 0% 的用户喜欢
大数据离线处理—hive的性能调优
经验技巧 0% 的用户喜欢
大数据离线处理—hive分区表
经验技巧 0% 的用户喜欢
其他海同名师 更多>>
刘新华
刘新华 联系TA
实力型。激情饱满,对专业充满热情
吴翠红
吴翠红 联系TA
独创“教、学、练、测”循环教学模式
吕益平
吕益平 联系TA
熟悉企业软件开发的产品设计及开发
黄泽民
黄泽民 联系TA
擅长javase核心技术
程钢
程钢 联系TA
擅长大型企业商业网站开发和管理
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:13167058313
小职老师的微信号:13167058313

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160

站长统计