Hive是构建在Hadoop的数据仓库平台,最初Hive被Facebook用来处理海量的用户和日志数据。利用Hive处理分析的数据一般满足结构化的特征,Hive基于MapReduce之上增加了优化和更可用性的特性,Hive把用户从复杂的MapReduce编程中解脱出来,Hive定义了类似于SQL的查询语言:HQL,Hive能够将HQL转换为相应的MapReduce程序,并在Hadoop平台上执行。
一、Hive的安装与启动
Hive的运行环境需要Jdk1.6、Hadoop0.17及以上版本,在这里我下载了hive-0.6.0.tar.gz。解压到/usr/local/hive,在环境变量中
- <spanstyle="font-size:medium;">HIVE_HOME=/usr/local/hive
- PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin</span>
- <spanstyle="font-size:medium;">
- </span>
首先,启动Hadoop,到HADOOP_HOME/bin下,执行start-all.sh,然后在命令行中输入hive,回车,就进入了Hive的执行界面:
二、HQL
create table 语句
第一行声明了一个名为user的一张表,该表包括两个字段id和name,分别为int和string类型。剩下的两行表示在存储user的数据的文件中每一行应该有三个字段,字段用tab键隔开,每行用回车隔开。
Load Data语句
将数据加载到user表中
通过上面的命令告诉Hive将sample.txt移动到hive的仓库目录(默认为/user/hive/warehouse)下面,在这个过程中不涉及到文件的解析,hive也不会按照特殊的格式来存储sample.txt。我们可以通过命令来浏览HDFS目录
select 语句
HQL的select操作和SQL非常相似,但是也有一些细微差别,这在以后会慢慢地讲到的
三、partitions and buckets
hive可以通过partitions将表粗粒度划分为不同的目录来提高查询的效率,例如包含时间戳的日志文件,如果我们按照时间来把日志文件分在不同的目录下,那么相同日期的记录就会存储在同一个分区目录下面,那我们就可以更高效率地查询特定某个时间的记录了。例如:
通过partitioned by声明的字段表面上和在普通的column没什么不一样的。如下所示:
不同之处在于,表并不存储通过partitioned by声明的字段,而是将不同字段的数据放在partitioned字段目录下面,通过路径来获得partitioned字段的值。所以在我们想partitioned 表中加载数据时,需要指明partitioned 字段的值,例如:
我们可以查看一个table的partitioned 情况:
为了是查询效率更高以及采样数据更方便,在Hive中引入了bucket的概念,首先来看一下如何产生一个bucketed的table。
首先需要将Hive的hive.enforce.bucketing属性设置为ture,然后加载数据:
下面我们来看一下bucketed_user 下的数据文件结构,包含了四个部分。
我们随便查看一个文件
可以看到id为1和5的记录被放进了同一个文件中,主要是应为我们设置了bucketed的参数为4,hive会按照id的hash值对4取模来确定存储的bucketed。
分享到:
相关推荐
Hive 学习笔记Hive
hive hadoo MapReduce 介绍Hive。Hive入门,Hive学习笔记
包括了Hive简介、安装搭建、常用操作、函数整理、优化整理。比较适合新手入门!个人整理,有问题请留言或发送邮件至name_hanlin@163.com
对Hive的学习过程总结,包括Hive的基本使用,Hive的调优,UDF函数的使用说明!
hive学习笔记,大数据,数据仓库纪要.
尚硅谷大数据技术hive学习笔记
大数据 之 Hive 学习笔记 ; 基本操作; 查询; 使用Hive注意点;
Hive学习笔记整理.pdf
HIVE学习笔记,看完整个文档,对HIVE与HADOOP的关系,就完全明白,就能直接用HIVE进行各种数据分析。hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop...
hive比较全的基础知识和笔记,相当不错的,适合初学者,下载绝对不亏,对于初学者尤其适合,各种知识点的汇总
hive学习笔记
初学者看这个就够了,越多越难学,Hive是基于Hadoop的一个数据仓库工具(离线),可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
IT十八掌第三期配套...1、Hive工作原理、类型及特点 2、Hive架构及其文件格式 3、Hive操作及Hive复合类型 4、Hive的JOIN详解 5、Hive优化策略 6、Hive内置操作符与函数 7、Hive用户自定义函数接口 8、Hive的权限控制
阿里巴巴内部分享的学习笔记 免费分享
Hadoop Hive入门学习笔记.pdf
1. 查询语言。由于 SQL 被广泛的应用在数据仓库中,因此,专门针对 Hive 的特性设计了类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。 2. 数据存储位置。Hive 是建立在 Hadoop 之上...