Hive分区表的导入与导出
最近在做一个小任务,将一个CDH平台中Hive的部分数据同步到另一个平台中。毕竟我也刚开始工作,在正式开始做之前,首先进行了一段时间的练习,下面的内容就是练习时写的文档中的内容。如果哪里有错误或者疏漏,希望各位网友能够指出。
第一篇:HDFS的上传与下载:https://www.cnblogs.com/BlackString/p/10552553.html
第二篇:Hive中数据的导入与导出:https://www.cnblogs.com/BlackString/p/10552806.html
第四篇:跨平台传输方案:https://www.cnblogs.com/BlackString/p/10553010.html
Hive分区表数据的上传与导出
1. 前言
经过前两篇的练习,我们练习了文件的上传与下载,以及Hive外部表数据的上传与导出。但是很多时候Hive的数据操作不仅仅是外部表,还有可能是对分区表的操作。接下来,就对分区表的数据操作进行练习。
2. 分区表的文件结构
1)创建一个分区表,分区字段为country:
hive> create table tt01(id int, name string) partitioned by(country string);
2)插入几条新数据:
hive> insert into tt01 partition(country='CN') values(1,'LS');
hive> insert into tt01 partition(country='CN') values(2,'ZS');
hive> insert into tt01 partition(country='US') values(3,'Alice');
hive> insert into tt01 partition(country='UK') values(4,'Tom');
3)到hive中查看表中的数据:
hive> select from tt01;
1 LS CN
2 ZS CN
3 Alice US
4 Tom UK
4)到HDFS中查看test02.db中,tt01文件夹下的文件:
[root@DataCenter2 aos_dic]# hadoop fs -ls /user/hive/warehouse/test02.db/tt01
drwxrwxrwt - root hive 0 2019-03-15 10:50 /user/hive/warehouse/test02.db/tt01/country=CN
drwxrwxrwt - root hive 0 2019-03-15 10:46 /user/hive/warehouse/test02.db/tt01/country=UK
drwxrwxrwt - root hive 0 2019-03-15 10:45 /user/hive/warehouse/test02.db/tt01/country=US
会发现Hive按照分区将数据分别存入了不同的文件夹下。
进入某一个分区,查看其中的数据:
[root@DataCenter2 aos_dic]# hadoop fs -ls /user/hive/warehouse/test02.db/tt01/country=CN
-rwxrwxrwt 3 root hive 5 2019-03-15 10:43 /user/hive/warehouse/test02.db/tt01/country=CN/000000_0
-rwxrwxrwt 3 root hive 5 2019-03-15 10:45 /user/hive/warehouse/test02.db/tt01/country=CN/000000_0_copy_1
其中发现两个文件,查看其中的内容,会发现每个文件中都存了一条数据。那么,是每条数据都生成一个文件吗?
5)向tt01中插入一条新的数据,分区为“CN”:
hive> insert into tt01 partition(country='CN') values(5,'WW');
到tt01文件夹下,country=CN中查看文件,会发现多出了一个新文件,查看这个新文件,发现其中存储的正是我们新插入的数据:
[root@DataCenter2 aos_dic]# hadoop fs -cat /user/hive/warehouse/test02.db/tt01/country=CN/000000_0_copy_2
5WW
3. 创建一个外部分区表
接下来,尝试在test02库中建立一个新的外部外部表,并且为其指定分区。
如何建立一个外部分区表呢?
最初的想法是,按照文件的格式新建一个表,然后指定分区的名称和文件的位置,这样建立的表应该是包含了我所有的数据的。但是在尝试了多次以后发现,Hive并不能自动识别已经建立好的分区。
经过查询得知,Hive分区表如果要载入外部分区数据,有两种方式:
1)手动指定分区并载入数据,如:
hive> alter table tt02 add partition (birth='1997') location '/hive> msck repair table tt02;
2)修复分区信息,如:
hive> msck repair table tt02;
Partitions not in metastore: tt02:birth=1998 tt02:birth=1999
Repair: Added partition to metastore tt02:birth=1998
Repair: Added partition to metastore tt02:birth=1999
但是以上两种方式并不包含直接建立表载入分区。
因此,建立一个外部分区表的步骤是:
1)按照文件数据的格式建立字段,并指定分区字段:
hive> create external table tt02(id int,name string,gender string) partitioned by (birth string) row format delimited fields terminated by ' ' location '/user/hive/warehouse/test02.db/tt02';
2)新增分区,或 修复分区:
hive> alter table tt02 add partition (birth='1997') location '/'
hive> msck repair table tt02;
Partitions not in metastore: tt02:birth=1998 tt02:birth=1999
Repair: Added partition to metastore tt02:birth=1998
Repair: Added partition to metastore tt02:birth=1999
3)查看数据:
hive> select from tt02;
1 LS m 1997
2 ZQ m 1997
3 LG f 1997
4 ST f 1997
5 SD m 1997
…… ……
Hive分区表的导入与导出的更多相关文章
- Hive中数据的导入与导出
最近在做一个小任务,将一个CDH平台中Hive的部分数据同步到另一个平台中.毕竟我也刚开始工作,在正式开始做之前,首先进行了一段时间的练习,下面的内容就是练习时写的文档中的内容.如果哪里有错误或者疏漏 ...
- 2.7-2.8 导入、导出数据(进/出)hive表的方式
一.导入数据进hive表 1.语法 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (p ...
- hive的数据导入与数据导出:(本地,云hdfs,hbase),列分隔符的设置,以及hdfs上传给pig如何处理
hive表的数据源有四种: hbase hdfs 本地 其他hive表 而hive表本身有两种: 内部表和外部表. 而hbase的数据在hive中,可以建立对应的外部表(参看hive和hbase整合) ...
- Hive 导入、导出数据
<------ 导入 ------> 从本地目录文件导入Hive表 语法:LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABL ...
- hive数据的导入导出方式
导入方式 1.load方式 load data local inpath 'local_path' into table tb_name; 从本地复制了文件到表的路径下 应用场景:大部分的使用,文件几 ...
- Sqoop_具体总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
一.使用Sqoop将MySQL中的数据导入到HDFS/Hive/HBase watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWFyb25oYWRvb3A=/ ...
- hive之数据导入导出
hive数据导入导出 一.导入数据4种方式 建表语句 create table test( name string, friends array, children map<string, in ...
- hive数据库导入与导出
原文连接:https://www.cnblogs.com/654wangzai321/p/9970321.html 把Hive表数据导入到本地 table->local file insert ...
- 将Hive统计分析结果导入到MySQL数据库表中(一)——Sqoop导入方式
https://blog.csdn.net/niityzu/article/details/45190787 交通流的数据分析,需求是对于海量的城市交通数据,需要使用MapReduce清洗后导入到HB ...
随机推荐
- react问题解决的一些方法
原文链接: https://segmentfault.com/a/1190000007811296?utm_source=tuicool&utm_medium=referral 初学者对Rea ...
- 用Cocos2dx开发棋牌游戏的观点解析
众所周知,目前棋牌游戏特别的火.很多游戏公司都想在这一块赚钱,可是却不知用什么软件比较好的去开发棋牌游戏,对此,我列出了两款比较靠谱的软件去开发棋牌游戏,希望对大家有帮助! 第一款软件是cocos2d ...
- 2017.11.19 C语言基础及流水灯实现
/* 从右往左*/ #include <reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADD ...
- mysql授权grant
本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删 ...
- JS文件写法操作,DOM基本操作
js文件写法.规范 // 定义全局变量 var num = 0;//这个是用来记数的. // 页面加载完成 window.onload = funtion(){ intVar();//初始化变量 s ...
- django2.0.6 连接使用redis集群
环境需要: django >= 1.8.x python 2.7 或者python >= 3.4 安装django-cluster-redis包: pip install django-r ...
- bui前端框架+yii整理
这个是做bui前端样式整合的时候记录的. 首先当然是要下载一个yii的源码,搭建起来. 第一步将bui的样式迁移到yii的样式目录中去 这里我在样式外面加了一个bui的文件夹,表示这个文件夹中存放的是 ...
- 创建局域网yum服务器
首先需要安装createrepo这个软件包,使用yum安装即可 创建软件库文件夹,比如mkdir -p /var/www/html/myrepo/x86_64, 将软件包拷贝到文件夹下. cd到该文件 ...
- 02:安装 Kerberos
1.1 环境介绍 参考博客:https://www.cnblogs.com/xiaodf/p/5968178.html https://www.douban.com/note/701660289/ ...
- 2018年山东省省队集训 Round 1 Day 2简要题解
从这里开始 Problem A 生日礼物 Problem B 咕咕 Problem C 解决npc (相信来看这篇博客的人都有题面) T2以为可以线性递推,然后花了两个小时.然后想了两个小时T1,会了 ...