博客 HIVE创建分区表

HIVE创建分区表

   数栈君   发表于 2023-09-25 10:22  501  0

一、创建静态分区表(SP static )

1.启动集群

2.进入hive

3.创建test1118数据库并使用

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/7f95b56daea1ef2bd3465e3edb9abbb4..png
  

4.创建 t1 表

create table t1(
c1 string,
c2 string
);
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/3249ed7d7616da6629d8d665f6a4cd69..png
  

5.查看表结构:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/8f3f3e8da34315c024016ae37240fae0..png
  

6.创建t2表

create table t2(
c1 string
) partitioned by ( c2 string ) row format delimited fields terminated by ',';
partitioned by ( c2 string ) # 创建分区 c1跟c2都是字段,但是创建的时候不能写在t2里面,只能写在分区里面(同时select查询的时候,c2的字段也要写在最后面)

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/6b3aff731144453611144843c8afe3cd..png
  

7.查看表结构:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/56340f7ad74085a39b174e0a7b7b2b13..png
  

8.上传数据到 t2 表的 c2 分区

要加载数据到分区表,只需在原来的加载数据的语句上增加partition关键字,同时指定分区的字段值即可。

注意:当你退出过hive后,再次进入hive,不要忘记使用了哪个database,我这里使用的是test1118数据库

load data inpath '/lyh/bbb.txt' into table t2 partition (c2='a');
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/a1f7bd35bd4c5907e2f5886fbaa6035e..png
  

9.需要进行修复,输入以下命令

msck repair table t2;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/c2aca04ac4d542466118d23367037528..png
  

10.查看内容

select * from t2;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/d1c7695533e4b17d4fda183108b09bd0..png
  

11.添加分区b

先确保集群上有a.txt这个文件退出hive

hdfs dfs -mkdir /user/hive/warehouse/test1118.db/t2/b
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/4f407b2df3d7b2edec23267f1bf29e9f..png
  
hdfs dfs -put /a.txt /user/hive/warehouse/test1118.db/t2/b
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/c1e93041dd3c0e6328354519b589aca5..png
  
进入hive 后使用命令

use test1118;
load data inpath '/lyh/a.txt' into table t2 partition(c2='b');
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/9848dccb4cd71e397869e491d6ef067e..png
  
但是这个时候是查看不了的,需要进行修复,输入以下命令

msck repair table t1;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/09cfe7c21e72dfb68039fe98194b3698..png
  
现在修复后可以进行查看

select * from t2;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/17f739faac82af89d93f40be5472a637..png
  
层次一次建好 分区可以逐个添加

create table t3 (
id int,
name string
)partitioned by (year string,month string)
row format delimited fields terminated by ',';
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/c0a5308c0863bff8402e03f72f2d95c6..png
  
load data inpath '/lyh/a.txt' into table t3 partition (year='2022',month='11');
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/57dd22182805e70c1cc9fe865eae7357..png
  
select * from t3 where year='2022';
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/4823f6c0963a04d55ab3b51afd317d9a..png
  
select * from t3 where year='2022' and month='11';
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/dd68ea2aa7d91a9cd1935e7a8332bd37..png
  
hdfs dfs -mkdir /user/hive/warehouse/test1118.db/t3/year
hdfs dfs -mkdir /user/hive/warehouse/test1118.db/t3/year/month
hdfs dfs -mkdir -p /user/hive/warehouse/test1118.db/t3/2023
这里的-p和linux意义不同

退出hive
hdfs dfs -mkdir -p /user/hive/warehouse/test1118.db/t3/2023/11
hdfs dfs -put /a.txt /user/hive/warehouse/test1118.db/t3/2023/11
进入hive,然后输入 use dest1118;

msck repair table t3;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/3c2076cad29684face42f157d95f5583..png
  
select * from t3;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/20922d9de4f51c41d91408f4054a1bd4..png
  
添加分区

alter table t3 add if not exists partition(year='2023',month='11');
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/aceaa98e148ea67ffdb356aec9faf4c1..png
  
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/cd5645dc17806c934415ebf778a84d00..png
  
退出hive

hdfs dfs -mv /d.txt /user/hive/warehouse/test1118.db/t3
进入hive,use test1118;

select * from t3;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/25e384d629fa635c1031f7a1431c83fb..png
  

二、创建动态分区表(DP dynamic)

开启动态分区

set hive.exec.dynamic.partition=true
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/e41b1c97ac52fff8bb3522f51eb2363e..png
  
...=false 关闭

create database test1125;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/8b74d70f59b266939655f6169ec4974d..png
  
use test1125;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/fcf02c3f89e57e32e5b862230adb8d41..png
  
create table t1(
c1 string
) partitioned by(c2 string)
row format delimited fields terminated by ',';
删除表

drop table t1;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/60da2f73e9655c755e0cc3d4672e6a93..png
  
create table t2(
id int,
name string
) partitioned by(year string,month string)
row format delimited fields terminated by ',';
create table t1(
title string,
author_name string,
dynasty string,
c1 string,
c2 string,
c3 string,
c4 string
) row format delimited fields terminated by ',';
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/712a7a54b07aa00a523fb60e1ccbc435..png
  
create table t1(
title string,
author_name string,
dynasty string,
c1 string,
c2 string,
c3 string,
c4 string
)partitioned by ( c5 string ) row format delimited fields terminated by ',';
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/00f0adaad173efcdef2f1b8de82f770d..png
  
创建一个a.txt文本,内容为

秋夜寄丘二十二员外,韦应物,唐代,怀君属秋夜,散步咏凉天,空山松子落,幽人应未眠
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/6cf5f4b161a2cb566d41935a43f42484..png
  
上传到集群

hdfs dfs -put a.txt /lyh
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/eb66a79c7ede401cca7300f83cde24d8..png
  
导入文本到 t1 表里

use test1125;
load data inpath '/lyh/a.txt' into table t1 partition(c5='a');
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/8408ea4647c62d5e6653c83bea7dc104..png
  
select * from t1;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/bfa961b57ff805065a134143623d619b..png
  






免责申明:


本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
上一篇:spring:事务操作
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群