hive进阶学习的总结

  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是关键字段,意思是按照哪个列分为几桶。

查询可以根据分开的桶进行查询,提速查询结果;

原文地址:https://www.cnblogs.com/qianshuixianyu/p/9455762.html