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 ...
随机推荐
- BELLMEN-FORD普通
#include <iostream> using namespace std; int m, n, u[100010], v[100010], w[100010];int check;i ...
- highcharts 大数据 String+,StringBuilder,String.format运行效率比较
实现String字符串相加的方法有很多,常见的有直接相加,StringBuilder.append和String.format,这三者的运行效率是有差异的,String是final类型的,每次相加都会 ...
- Easy methods to select MB Star, Extremely MB Star, MB SD C4, Mercedes BENZ C5 SD
MB Star, Extremely MB SD Connect C4, MB SD C4, Mercedes BENZ C5 SD are usually analysis tools to get ...
- 原生js计时器
闲来无事,写一个简单的计时器 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- Android中碎片的添加问题
碎片在Android中的应用是十分广泛的,它就像是嵌在活动中的另一个活动就像是一个容器包含了另一个容器,那么到底该怎么添加碎片呢?主要有两种方法,一种是在该碎片所在的xml文档中使用Android:n ...
- Pycharm 的设置--参数设置(运行.py文件带参数,例如argument)
程序运行时,如果需要输入参数,如下图中程序代码: 在生成exe后,程序在控制台下运行时格式为: 这种情况在调试程序时,如果只是在Pycharm环境中简单执行“Run”菜单下的“Run”命令,会出现以下 ...
- Iview的小经验
1.动态控制form验证的小红星 HTML部分: <FormItem :class="{requireStar:bankFlag1}"> CSS部分: /*动态必填项c ...
- Caffe+CUDA8.0+CuDNNv5.1+OpenCV3.1+Ubuntu14.04 配置参考文献 以及 常见编译问题总结
Caffe + CUDA8.0 + CuDNNv5.1 + OpenCV3.1 + Ubuntu14.04 配置参考文献 ---- Wang Xiao Anhui University CVPR ...
- tcp config
$ sudo sysctl net.ipv4.tcp_reordering=1 $ sudo sysctl net.ipv4.tcp_thin_linear_timeouts=1 $ sudo sys ...
- 【php】单例模式和工厂模式
单例模式:防止重复实例化,避免大量的new操作,减少消耗系统和内存的资源,使得有且仅有一个实例对象 header("Content-type: text/html; charset=utf- ...