hive的安装和MySQL的安装以及关联,这里不再赘述,本章主要讲一下hive2的使用以及一些需要注意的问题。
一.因为现在hive已经不能满足人们更高的需求了,所以hive2成为了主流的应用查询和计算工具。hive将MapReduce的源代码进行封装,
通过写sql语句将其以MapReduce的方式进行运算。但缺少了执行过程的逻辑性,所以利弊各有。
1、 现在我们用beeline进行连接jdbc进行操作。
首先连接hiveserver2,可以后台运行,如果需要看到执行进程,可另外新建窗口连接;然后连接beeline,进入后,我们连接jdbc,默认端口为10000端口———!connect jdbc:hive2://机名:10000
输入相应设置的连接名和连接密码后,可以正常实用beeline并连接到数据库。
2.先看看我们有哪些数据库:show databases; 也可建立新的数据库:create database 名;
实用数据库: use 数据库名; 显示数据表: show tables;或创建。
3.创建表
创建表只要学过数据库的问题都不大,额外要会对文本进行考量。
你要知道所创建的表用来存放哪些数据的;这些数据都是什么类型的;字段之间用什么进行分割的;最后是以什么文本形式存在的。
create table if not exists emp_basic ( emp_id int, quit_date date ) row format delimited fields terminated by ',' stored as textfile;
当然,对于文本的定义,可能还会出现array数组、map键值对、集合collection等,都需要我们对其进行规则定力。
4、内部表和外部表的区别
正常的建表大都是内部表。外部表的建立有明显特征,创建语句含external,且有固定存储的独立路径 location 。
区别:内部表---具有处置权,可以进行正常的增删改查。经验用于统计,查询,修改数据等操作;
外部表---只能进行相应的查询,增加只会独立新的模块,本身不变化。经验用于数据分享。
这样符合了HDFS的那句话:文件都是 ---- 一次写入,多次读取。
5、分区partition
分区分桶都有开启的模式,百度即可。
创建分区表分为静态分区和动态分区。
静态分区:在创建表的时候就创建好分区,数据依据分区写入。分区单一,需要手动添加。如
create table m1( id int, name string) partitionde by(id) row format .....
动态分区:是在传入数据的过程中产生分区,分区自动生成,省去了许多。如
insert overwrite table par partition(sex='man',dt) select name, nation, dt from par_tab;
6.分桶bucket
对于每一个表或者分区,可以进一步细分成桶,桶是对数据进行更细粒度的划分。
clusterd by(id) into 4 buckets是关键字段,意思是按照哪个列分为几桶。
查询可以根据分开的桶进行查询,提速查询结果;