蜂巢数据模型

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

,,,, Hive 数据表有五种类型:内部表,外部表,分区表,桶表,视图表,默认以tab 分隔

,,* MySQL (Oracle),表默认以逗号分隔,因此,要想导入MySQL (Oracle),数据,需要设置分隔符,在建表语句后加:

,,,,,,,,,,,, row format ,delimited ,fields ,terminated by & # 39;& # 39;;



,,,,内部表:,相当于MySQL 中的表,将数据保存到Hive 自己的数据仓库目录中:/usr/蜂巢/仓库

,,,,,,,,,,,,例子:

create table emp

(empno int,

ename字符串,字符串

工作,

下int,

hiredate字符串,

萨尔int,

通讯int, int

deptno

);

导入数据到表中:本地,HDFS

加载语句、插入语句

加载语句相当于ctrl + X

数据加载inpath & # 39;/斯科特emp.csv& # 39;表emp,,,- - - - -在导入HDFS

数据加载本地inpath & # 39;/根/temp/* * * & # 39;表emp,,,- - - - -在导入本地文件

创建表,并且指定分隔符

create table emp1

(empno int,

ename字符串,字符串

工作,

下int,

hiredate字符串,

萨尔int,

通讯int, int

deptno

)行格式分隔字段终止& # 39;& # 39;;

创建部门表,保存部门数据

create table部门

(deptno int,

dname字符串,

loc字符串)行格式分隔字段终止& # 39;& # 39;;


数据加载inpath & # 39;/斯科特dept.csv& # 39;表部门;

,,,,外部表:相对于内部表,数据不在自己的数据仓库中,只保存数据的元信息

,,,,,,,,例子:

(*)实验的数据

[root@bigdata11 ~] # hdfs dfs猫/学生/student01。txt

1,汤姆,23日

2,玛丽,24

[root@bigdata11 ~] # hdfs dfs猫/学生/student02.txt

3,迈克,26日

(*)定义:(1)表结构,(2)指向的路径

创建外部表students_ext

(sid int, sname字符串,年龄int)

行格式分隔字段被& # 39;终止,& # 39;

位置& # 39;/学生# 39;;


,,,,分区表:将数据按照设定的条件分开存储,提高查询效率,分区- - - - -→,目录

,,,,,,,,例子:

,,

(*)根据员工的部门号建立分区

create table emp_part

(empno int,

ename字符串,字符串

工作,

下int,

hiredate字符串,

萨尔int, int

通讯

)分区,(deptno int)

行格式分隔字段终止& # 39;& # 39;;

往分区表中导入数据:指明分区

插入表emp_part分区(deptno=10)选择empno, ename,工作,下,hiredate,萨尔,通讯从emp1 deptno=10;

插入表emp_part分区(deptno=20)选择empno, ename,工作,下,hiredate,萨尔,通讯从emp1 deptno=20;

插入表emp_part分区(deptno=30)选择empno, ename,工作,下,hiredate,萨尔,通讯从emp1 deptno=30;

,,,,桶,表:本质上也是一种分区表、类似,hash 分区,,桶——比;文件

,,,,,,,,例子:

,创建一个桶表,按照员工的职位工作分桶

create table emp_bucket

(empno int,

ename字符串,字符串

工作,

下int,

hiredate字符串,

萨尔int,

通讯int, int

deptno

)集群(工作)到4桶

行格式分隔字段终止& # 39;& # 39;;

使用桶表,需要打开一个开关

设置hive.enforce.bucketing=true;

使用子查询插入数据

插入emp_bucket select * from emp1;



,,,,视图表:视图表是一个虚表,不存储数据,用来简化复杂的查询

,,,,,,,,例子:

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,查询部门名称,员工的姓名

创建视图myview

选择dept.dname emp1。ename

从emp1部门

emp1.deptno=dept.deptno;


select * from myview;


蜂巢数据模型