Hive 表类型简述
Hive 表类型简述
表类型一、管理表或内部表Table Type: MANAGED_TABLE
example:
create table Inner(
id int,
name string,
description string
)
//用来指定原文件的列分隔符
row format delimited fields terminated by '\t';
表类型二、外部表(原始数据表多建于外部表)
example:
create external table extertab(
nobo int,
name string,
job string,
birthday string,
salary float,
bonus float
)
row format delimited fields terminated by '\t'
location'/input/demo';
表类型三、分区表(既可以是内布表,也可以是外部表,看需求而定!)
example:
create table part@NewYork_England(
no int,
name string,
job string,
mgrno int,
birthday string,
salary float,
bonus float
)
<!—当分区只有一个字段时,称为一级分区表;两个字段为二级分区表;还有三级分区表,分区表创建表的时候需要指定分区字段,分区字段与普通字段的区别:分区字段会在HDFS表目录下生成一个分区字段名称的目录,而普通字段则不会,查询的时候可以当成普通字段来使用,一般不直接和业务直接相关。-->
partitioned by (province string)
row format delimitedfields terminated by '\t';
//增加分区
aler table emp_partadd [if not exist] partition(provine='zhejiang',city='hangzhou')
//增加分区并指定分区数据所在目录
Alter table emp_part add partition(province=’Boston’) location ‘/user/hive/warehouse/mydb.db/emp_part/Boston’;
//向分区表加载数据
<!—-本地向分区表中添加数据的方法-->
load data localinpath '/home/user01/emp.txt' into table emp_part partition(province='CHICAGO');
<!—-hdfs节点向分区表中添加数据的方法;这个操作会造成当前节点的数据(剪贴)移动至表中-->
load data inpath'/input/user01/emp.txt' into table emp_part partition (province='CHICAGO');
<!—-直接从本地将数据填充到至表所在的路径中-->
dfs -put '/home/vampire/emp.txt'into table emp_part partition (province='CHICAGO');
[动态分区表]
严格模式:static partitioned by (county string,states string)
非严格模式:partitioned by (county string,states string)
需要设置以下参数:
//是否开启动态分区功能 0.13版本默认开启
set hive.exec.dynamic.partition=true;
//动态分区的模式,默认strict,表示必须指定至少一个分区为静态分区,nonstrict模式表示允许所有的分区字段都可以使用动态分区
set hive.exec.dynamic.partition.mode=nostrict;
create table dypart(
id int,
name string
)
partitioned by (addr string)
row format delimited fields terminated by '\;';
//使用特殊字符作为分隔符时需要转义
//动态分区必须使用mapreduce才能完成,所以不能使用load方式加载
insert into table dypart partition (addr) select deptno,deptname,addr as addr from dept;
-----------------------
--二级动态分区表
create external table dypart2(
empno int,
empname string,
empjob string,
mgrno int,
birthday string,
salary int,
bonus float,
deptno int
)
partitioned by (country string,province string)
row format delimited fields terminated by '\t'
location '/hive/dynamic/dypart2';
--location之后的目录可以不存在,创建表会自动创建,但作为外部表推荐目录和数据已经存在
--开启严格模式
set hive.exec.dynamic.partition.mode=strict;
--严格模式中,要求主分区必须为静态分区,辅助分区可以为动态
insert into table dypart2 partition (country='usa',province) select empno,empname,empjob,mgno,birthday,salary,bonus,depno,depno as province from emp;
--通过子查询方式
insert into table dypart2 partition (country='usa',province) select c.empno,c.empname,c.empjob,c.mgno,c.birthday,c.salary,c.bonus,c.depno,c.deptname as province from (select * from emp a join dept b on a.depno=b.deptno) c;
--覆盖导入方式,此时overwrite和into不能连用
insert overwrite table dypart2 partition (country='china',province) select a.empno,a.empname,a.empjob,a.mgno,a.birthday,a.salary,a.bonus,a.depno,b.deptname as province from emp a join dept b on a.depno=b.deptno;
表类型四:桶表
将内部表,外部表和分区表进一步组织成桶表
可以将表的列通过Hash算法进一步分解成不同的文件存储
create table test_bucket_table(
id int,
name string
)
clustered by (id) into 5 bucket;
表类型五:临时表 TEMPORARY hive-0.14以后支持
操作表的一些常用命令:
//描述表信息
desc formatted emp_part;
//查询全表数据
select * fromemp_part;
//查询分区字段表数据
select * fromemp_part where province='CHICAGO';
//查看分区信息
show partitionsemp_part;
//描述表结构
desc formatted emp;
//删除内部表
drop table dept;
//删除外部表
drop table emp;
//清空表数据
truncate tablestudent;
//删除分区
aler table emp_partdrop partition(provine='zhejiang',city='hangzhou')
Hive 表类型简述的更多相关文章
- hive 表类型
Hive表有受控表(内部表).外部表.分区表.桶表四种. 内部表,就是一般的表,前面讲到的表都是内布标,当表定义被删除的时候,表中的数据随之一并被删除. 外部表,数据存在与否和表的定义互不约束 ...
- Spark DataFrame vector 类型存储到Hive表
1. 软件版本 软件 版本 Spark 1.6.0 Hive 1.2.1 2. 场景描述 在使用Spark时,有时需要存储DataFrame数据到Hive表中,一般的存储方式如下: // 注册临时表 ...
- spark+hcatalog操作hive表及其数据
package iie.hadoop.hcatalog.spark; import iie.udps.common.hcatalog.SerHCatInputFormat; import iie.ud ...
- 哈希表(Hashtable)简述
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中 ...
- 导hive表项目总结(未完待续)
shell里面对日期的操作 #!/bin/bash THIS_FROM=$(date +%Y%m%d -d "-7 day") THIS_TO=$(date +%Y-%m-%d - ...
- Spark 读写hive 表
spark 读写hive表主要是通过sparkssSession 读表的时候,很简单,直接像写sql一样sparkSession.sql("select * from xx") 就 ...
- sqoop mysql导入hive 数值类型变成null的问题分析
问题描述:mysql通过sqoop导入到hive表中,发现有个别数据类型为int或tinyint的列导入后数据为null.设置各种行分隔符,列分隔符都没有效果. 问题分析:hive中单独将有问题的那几 ...
- 将DataFrame数据如何写入到Hive表中
1.将DataFrame数据如何写入到Hive表中?2.通过那个API实现创建spark临时表?3.如何将DataFrame数据写入hive指定数据表的分区中? 从spark1.2 到spark1.3 ...
- sqoop导入数据到hive表中的相关操作
1.使用sqoop创建表并且指定对应的hive表中的字段的数据类型,同时指定该表的分区字段名称 sqoop create-hive-table --connect "jdbc:oracle: ...
随机推荐
- ABP框架系列之四十四:(OWIN)
If you are using both of ASP.NET MVC and ASP.NET Web API in your application, you need to add Abp.Ow ...
- LVS、Nginx 及 HAProxy 工作原理
当前大多数的互联网系统都使用了服务器集群技术,集群是将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是 Web 应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器 ...
- 2019swpuj2ee作业3
静态页面: 在网站设计中,纯粹html格式的网页通常被称为“静态网页”,早期的网站一般都是由静态网页制作的.静态网页是相对于动态网页而言,是指没有后台数据库.不含程序和不可交互的网页.你编的是什么它显 ...
- [ 9.22 ]CF每日一题系列—— 484A Bits
Description: 给你一个l,r的区间让你找一个最小的x并且其二进制数要包含最多的1位,输出它的十进制 Solution: 我本来就是贪心,但是贪大了,想1一直往上添加1,但是忘记了0在中间的 ...
- Docker基础-使用Dockerfile创建镜像
1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # This dockerfile uses the ubuntu image # VERSION 2 - ED ...
- spring redis @Cacheable注解使用部分错误及无效原因
spring redis @Cacheable注解使用部分错误及无效原因 说明: spring项目用到redis注解无效,解决问题中遇到一堆BUG,各种搜索,看了许多错误解决方案一一测试,对于 ...
- Tomcat 在 Linux 上的安装和配置
一.文件上传 先上传tomcat安装文件到Linux服务器 二.解压安装 使用以下命令解压安装包 .tar.gz 解压成功会生成一个文件夹 tomcat服务器运行时是需要JDK支持的,所以必须先安装好 ...
- 使用cygwin中的awk工具进行mysql binlog日志查看[利刃篇]
linux工具确实强悍,然而作为没有linux机器使用权以及开发没有使用linux进行的人,有时想用一些命令确实不方便,所以,才去试着用用cygwin,一款在windows平台上运行的类UNIX模拟环 ...
- KNN算法简介
KNN算法 K-近邻算法原理 K最近邻(kNN,k-NearestNeighbor)分类算法,见名思意. 我们的目的是要预测某个学生在数学课上的成绩... 先来说明几个基本概念:图中每个点代表一个样本 ...
- vue 自学笔记(三) 计算属性与侦听器
一:计算属性 虽然在模板内使用表达式对属性进行处理十分便利,例如在小胡子语法里写number + 1实现对数据的简单处理,但若我们在其中加入大量的代码,使得逻辑变重,导致难以维护.例如下面的代码,并不 ...