1、HIve的数据模型
2、Hive的基本安装
3、Hive的shell使用以及HQL的使用
4、Hive的优化
5、其它方式访问Hive表中的数据的形式
1、HIve的数据模型:
表(Table) 外部表(External Table)分区(Partition)桶(Buckets)
表(Table)主要包括元数据以及实际的数据,一般元数据主要存储在关系型的数据库中,而实际的数据一般存放在HDFS创建的/usr/hive/warehouse这个目录下。在删除表的时候,元数据和目标数据都删除。
外部表(EXternal Table)元数据存放在关系型的数据库中,实际数据存放在绝对位置,不需要将数据移动到/usr/hive/warehouse这个目录下的表目录下。在删除表的时候,元数据删除,目标数据不删除。
分区:主要是为了加快查找的速度,一般需要人为的设定分区的字段,以及查询时,人工填写要查找的分区。
桶:主要是将一个文件按照key的hash分配到不同的桶中,加快查找,同时也有主要样本的抽样,减少执行的时间。
2、Hive的基本安装(可以按照前面的博客)
(1)首先安装Hadoop的hdfs
(2)需要安装,mysql
3、Hive的shell使用以及HQL的使用
我们可以使用Hive shell 进行数据的访问
DDl DMLQuery
DDL :主要包括 create alter,drop等对于表的创建
create table 表明(列名 数据类型)partition by()clustered by()sorted by()row format delitimited field terminated by '\t'
drop table 表名
alter table 表名add ***
create table 表名 like
create table 表名 select * from 表名;
DML:几个常用的语句
Load Data Local INPATH ‘/user/path/***’ into table 表明
Insert OVERWRITE table 表名 select * from 表名
insert overwrite directory ‘地址’ select * from表名
insert overwrite local directory ‘地址 ’select * from 表名
Query(查询)
主要使用的就是select 语法跟sql 的差不多。
4、Hive的优化
1、我们可以将table表的数据的存储格式用RCFile存储,这种存储比textFile,SequenceFile高效。
2、合理的使用分区和桶,加在查找的速度
3、保证数据集均匀分布在集群中
4、优化我们的sql语句,保证执行的效率
扩展:
前面几篇博客主要讲解的是使用RCFile进行文件的保存。
(1)了解RCFile 文件的具体格式
(2)如何将Hive的文件转化为RCFile文件的格式(很简单)
(1) 将文件导入到hive表中
(2)在将这张表中的数据插入到另外一张表中。这个新的这张表就是RCFIle文件的格式
(3)压缩算法(GZIP,SNAPPY,LZO)一般在Hive shell中通过set设置
HIve将文件保存为RCFile文件形式时,在使用压缩算法,减少文件的存储空间。
(4)MapReduce并没与提供RCFIle的形式
通过MapReduce将文件转化为RCFile形式,并读取RCFIle文件
5、其它方式访问Hive表中的数据的形式
我们可以使用JDBC的方式,访问Hive中的数据。