Hive
命令后要加‘;‘
创建表
1 | create table emp001(empno int,ename string,job string,mgr int,hiredate string,sal int,comm int,deptno int) row format delimited fields terminated by ','; |
从hdfs导入数据到hive表
1 | load data inpath '/001/hive/emp.csv' into table emp001; |
建立分区
1 | create table emp_part001(empno int,ename string,job string,mgr int,hiredate string,sal int,comm int) partitioned by (deptno int)row format delimited fields terminated by ','; |
向分区中导入数据
建立分区的作用:建立分区可以理解为给hive表建立了一个索引,查询hive表时可以以分区作为条件,而不需要遍历整张表
1 | insert into table emp_part001 partition(deptno=10) select empno,ename,job,mgr,hiredate,sal,comm from emp001 where deptno=10; |
建立桶表
建立桶表的作用:对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive也是针对某一列进行桶的组织。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。所谓Hive中的分桶,实际就是指的MapReduce中的分区。根据Reduce的数量,分成不同个数的文件
1 | create table emp_bucket001(empno int,ename string,job string,mgr int,hiredate string,sal int,comm int,deptno int)clustered by (job) into 4 buckets row format delimited fields terminated by ','; |
常用操作
查看hive表的设计
1 | describe tablename; |
查看hive中的所有数据库
1 | show databases; |
查看hive中的所有表
先要使用具体某一个数据库
1 | use databaseName; |