Hive3第三章:DML数据操作

系列文章目录

Hive3第一章:环境安装
Hive3第二章:简单交互
Hive3第三章:DML数据操作


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

这一次学习DML数据操作的导入和导出数据。


一、数据导入

1. 向表中装载数据(load)

语法
load data [local] inpath ‘数据的 path’ [overwrite] into table student [partition (partcol1=val1,…)];
(1)load data:表示加载数据
(2)local:表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表
(3)inpath:表示加载数据的路径
(4)overwrite:表示覆盖表中已有数据,否则表示追加
(5)into table:表示加载到哪张表
(6)student:表示具体的表
(7)partition:表示上传到指定分区
创建一张表

create table student(id string,name string) row format delimited fields terminated by '\t';

简单说一下,创建一张空表,里面含有两个字段,分别是id和name。用’\t’也就是tab做分隔符。
在这里插入图片描述
在这里插入图片描述
load data local inpath ‘/opt/module/hive/datas/student.txt’ into table default.student;
然后本地随便写点数据做测试,注意格式要一致。

mkdir /opt/module/hive/datas
vim /opt/module/hive/datas/student.txt

在这里插入图片描述
然后加载到hive。

load data local inpath '/opt/module/hive/datas/student.txt' into table default.student;

在这里插入图片描述
这里的local代表着从本地上传,如果文件以及在hdfs之中就把local去掉,路径换成hdfs路径即可。
现在我们修改修改一下测试文件,然后将其上传到hdfs。
在这里插入图片描述

hadoop fs -put /opt/module/hive/datas/student.txt /student.txt

在这里插入图片描述
这次我们覆盖式的导入。

load data inpath '/student.txt' overwrite into table default.student;

在这里插入图片描述

2. 通过查询语句导入(insert)

这个情况更使用于,要将一张表的一部分内容导出到另一张表中。
先创建一张新表,student1,之后我们把student表中的第二行插入到新表中。

create table student1(id string,name string) row format delimited fields terminated by '\t';

在这里插入图片描述

insert into table student1
select id, name from student where id=1002;

为了逻辑清晰,建议分行写,因为hql是以 ; 为结尾所以回车随便用。
在这里插入图片描述
这里会调用MR时间会长一点,稍等一下。
在这里插入图片描述
这里和上边一样 insert into 是追加,insert overwrite是覆盖。
导入数据还有一些,但是剩下的不太常用,就不说了,以后用到再说。

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、数据导出

1.hadoop导出

这个就不演示了,用 -put就行。

2.insert导出

insert overwrite local directory '/opt/module/hive/data/student3.txt'
select * from student;

在这里插入图片描述
在这里插入图片描述
可以看到,这里的导出结果并不规范,现在我们进行规范化的导出。

insert overwrite local directory '/opt/module/hive/data/student4.txt'
REPLACE      RESOURCE     REWRITE      
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from student;

可以看到,命令很长,尽量多用Tab键。
在这里插入图片描述
还是把local去掉,路径换成hdfs就可以导出到hafs了。

3.shell导出

bin/hive -e 'select * from default.student;' >> /opt/module/hive/data/student5.txt

这个和前边的命令行交互有点像,-e + 命令 -f 加脚本
在这里插入图片描述

4.Export 导出到 HDFS 上

export table default.student to '/student2';

在这里插入图片描述注:export 和 import 主要用于两个 Hadoop 平台集群之间 Hive 表迁移。


总结

这次的内容就到这里,比较少,主要是下次的查询的内容比较重要,所以准备单写一次博客。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值