文档章节

Hive数据库表的操作

Mist_
 Mist_
发布于 2016/12/30 14:23
字数 1242
阅读 503
收藏 14

Hive数据库表的操作

 

Hive数据库建表的详细操作

1.Hive数据表的四种类型:管理表,外部表,分区表,桶表

2. 创建临时表(关键字temporary)

2.1 语法

create temporary table student(

ip string comment 'student ip',

name string

)

2.2 Hive从0.14.0开始提供创建临时表的功能

表只对当前session有效,session退出后,表自动删除。

2.3 注意点

a. 如果创建的临时表表名已存在,那么当前session引用到该表名时实际用的是

临时表,只有drop或rename临时表名才能使用原始表;

b. 临时表限制:不支持分区字段和创建索引。

2.4 临时表的存储类型配置

从Hive1.1开始临时表可以存储在内存或SSD,使用hive.exec.temporary.table.storage

参数进行配置,该参数有三种取值:memory、ssd、default。

3. 外部表和管理表(关键字:external)

3.1 语法

creata external table student_ext(

id int,

name string

)

row format delimited fields terminated by '\t';

3.2 管理表和外部表的异同

a. 外部表创建的时候多一个关键字external

b. 管理表删除:数据库表的数据和HDFS上的对应表文件同时删除;

外部表删除:只删除数据库表的数据,HDFS上的对应表文件不会删除。

c. 外部表的这种情况保证了数据的安全性,防止误操作删除数据。

d. 除了创建表的时候外部表多了一个关键字,其他操作语句和管理表完全一致。

4. 分区表的相关操作(关键字:partitioned by)

4.1 创建分区表(注意partpartitioned和row的顺序)

天+小时(一般分区表和外部表一起使用)

creata external table student_parthour(

id int,

name string

)

partitioned by (date string,hour string)

row format delimited fields terminated by '\t';

4.2 导入数据

load data local inpath '/opt/modules/mydata/student.txt'

into table student_parthour Partition(date='20161101',hour='18');

4.3 查看分区表数据

select * from student_parthour where date='20161101' and hour='18';

4.4 查看分区表(主要是查看分区情况):show partitions student_part ;

4.5 删除分区表:alter table student_part drop partition(date='20161030');

4.6 分区表的应用场景

a. 由第三方提供的数据源或者数据源是日志文件;

b. 分区表一般采用外部表+分区表的格式;

c. 主要用于定时任务加载数据;

d. 主要用于同比或者环比分析数据。

注意:引用外部表数据是因为删除外部表保留数据; 防止误删除操作,删除所有

数据;查询时尽量利用分区字段,如果不使用分区字段,就会全部扫描。

4.7 分区表优点:分期增量抽取数据,定时任务完成,主要在于优化查询。

5. 创建桶表(关键字:clustered by,sorted by)

5.1 语法

creata table student_new(

id int,

name string

)

clustered by (id) sorted by(name) into 4 buckets

row format delimited fields terminated by '\t';

5.2 桶表的使用

a. Hive采用对列值哈希,然后除以桶的个数求余决定该条记录存放在哪个桶当中;

b. 采用桶能够带来一些好处,比如JOIN操作. 对于JOIN操作两个表有一个相同的列,如果对这两个表都进行了桶操作. 那么将保存相同列值的桶进行JOIN操作就可以,可以大大较少JOIN的数据量;

c. hive中table可以分成partition,clustered by可以将table和partition分成bucket,

d. sorted by将bucket中的数据排序. 提升某些查询操作效率,例如mapside join;

e. clustered by和sorted by不会影响数据的导入,用户必须自己负责数据如何导 入,包括数据的分桶和排序。'set hive.enforce.bucketing = true'  可以自动控制上一轮reduce的数量从而适配bucket的个数,用户也可以自己设置 mapred.reduce.tasks去适配bucket 个数。

5.3 bucket主要作用

a. 数据sampling(抽样)

b. 提升某些查询操作效率,例如mapside join

6. like创建一个和已经存在表相似的表(关键字:like)

like创建的表只有表结构,没有数据

creata table student_new(

id int,

name string

)

like student

location '/user/hive/warehouse/student'

row format delimited fields terminated by '\t';

7. 行格式化分隔符(关键字:row format delimited fields terminated by )

creata table student_new(

id int,

name string

)

row format delimited fields terminated by '\t';

常见的分隔符:\t(tab), 逗号,空格

8. 创建表指定位置(关键字:location)

creata table student2(

id int,

name string

)

row format delimited fields terminated by '\t'

location '/app/mydata/'; --这个对应的是hdfs上的目录

 

创建表的方式

1 直接创建表

create table db_1031.emp(empno int,ename string,job string,mgr int,hiredate string,

sal double,comm double,deptno int)row format delimited fields terminated by '\t';

2 把另外一张表的某几个字段抽取出来创建成一张新表(创建的表包含数据)

create table db_0831.emp_as as select * from emp ;

create table db_0831.emp_as as select name from emp ;

3 复制表结构(不包含数据)

create table db_0831.emp_like like emp ;

 

© 著作权归作者所有

Mist_
粉丝 3
博文 2
码字总数 1598
作品 0
洛阳
私信 提问
大数据教程(11.6)hadoop2.9.1平台上仓库工具hive2.3.4搭建

上一篇文章介绍了hive的原理以及实现机。本篇博客开始,博主将分享数据仓库hive工具搭建全过程。 一、安装Hive (1)、下载Hive和环境准备: Hive官网地址:http://hive.apache.org/index.html...

em_aaron
01/20
51
0
hive、Hasee、pig区别.docx

Hive 起源于FaceBook,Hive在Hadoop中扮演数据仓库的角色。建立在Hadoop集群的最顶层,对存储在Hadoop群上的数据提供类SQL的接口进行操作。你可以用 HiveQL进行select,join,等等操作。 如果你...

hiqj
2015/09/10
116
0
Hive架构以及应用介绍

Hive这个框架在Hadoop的生态体系结构中占有及其重要的地位,在实际的业务当中用的也非常多,可以说Hadoop之所以这么流行在很大程度上是因为Hive的存在。那么Hive究竟是什么,为什么在Hadoop家...

a2011480169
2016/05/23
0
0
Hive体系结构

1、Hive架构与基本组成 下面是Hive的架构图。 图1.1 Hive体系结构 Hive的体系结构可以分为以下几部分: (1)用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会...

清清浅浅
2016/11/28
54
0
【Hive】Hive结合MySQL的配置及操作

1、安装MySQL (1)解压mysql安装包: (2)切换到root用户,查询系统中是否已安装mysql: 如果已安装,删除已安装的mysql文件: (3)进入解压好的mysql-libs目录,对root用户赋予执行权限:...

gongxifacai_believe
2018/04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部