hive的数据模型
hiv的数据模型有6种:
- 内部表
- 外部表
- 分区表
- 静态分区
- 动态分区
- 桶表
- 视图
- 物化视图
内部表
从hive上创建的表通过hive存储到hdfs上的表叫内部表
默认:在/user/hive/warehouse/目录下(hdfs上的目录)
删除内部表:元数据、数据都会被删除
创建一个普通的表(默认的分隔符:是一个不可见字符)
create table emp
(empno int,
ename string,
job string,
mgr int,
hiredate string,
sal int,
comm int,
deptno int);
然后加载数据可以使用insert,也可以使用load,也可以使用sqoop
如果使用insert语句插入到上面的表中我们使用默认的分隔符就可以了
insert into emp values(7499,‘ALLEN’,‘SALESMAN’,7698,‘1981/2/20’,1600,300,30);
但是我们如果使用load语句来加载数据到hive,表的分隔符就需要根据具体情况指定了
使用load语句可以加载hdfs和本地数据到表中
我们测试load加载hdfs中的数据到hive中这个操作相当于ctr +X,这个操作会把hdfs上的这个文件剪切掉
我们已经加载到了hive中,从上图中hdfs中可以查看到,但是我们在hive中使用select语句确查不到,这个就是因为分隔符的问题
我们从新创建一张表,顺便测试load本地(linux)文件到hive中,这个操作相当于ctr+c,并不会删除本地文件
create table emp
(empno int,
ename string,
job string,
mgr int,
hiredate string,
sal int,
comm int,
deptno int)
row format delimited fields terminated by ',';
外部表
外部表就是直接使用hdfs的数据创建表,在实际工作中,结合 外部表+分区表 更常用;
每张表中有一条数据,数据之间用逗号隔开
然后我们创建外部表
create external table ext_students(sid int,sname string,age int)row format delimited fields terminated by ',' location '/student';
查询一下