1. 安装hive
2. hive实战
3. hive存储模型
4. 深入hql查询语言
5. 参考资料及代码下载
<1>. 安装hive
下载hive,下载地址http://mirror.bjtu.edu.cn/apache//hive/
,解压该文件:
xuqiang@ubuntu:~/hadoop/src/hive$ tar zxvf hive-0.7.0-bin.tar.gz
设置环境变量:
xuqiang@ubuntu:~/hadoop/src/hive$ cd hive-0.7.0-bin/
xuqiang@ubuntu:~/hadoop/src/hive/hive-0.7.0-bin$ export HIVE_HOME=`pwd`
添加HIVE_HOME到环境变量PATH中:
xuqiang@ubuntu:~/hadoop/src/hive$ export PATH=$HIVE_HOME/bin:$PATH;
在运行hive之前,请确保变量HADOOP_HOME已经设置,如果没有设置,可以使用export命令设置该变量。
然后需要在hdfs上创建如下的目录来保存hive相关的数据。
xuqiang@ubuntu:~
/
hadoop
/
src
/
hive
$
$
HADOOP_HOME
/
bin
/
hadoop fs -
mkdir
/
tmp
xuqiang@ubuntu:~
/
hadoop
/
src
/
hive
$
$
HADOOP_HOME
/
bin
/
hadoop fs -
mkdir
/
user
/
hive
/
warehouse
xuqiang@ubuntu:~
/
hadoop
/
src
/
hive
$
$
HADOOP_HOME
/
bin
/
hadoop fs -chmod g
+
w
/
tmp
xuqiang@ubuntu:~
/
hadoop
/
src
/
hive
$
$
HADOOP_HOME
/
bin
/
hadoop fs -chmod g
+
w
/
user
/
hive
/
warehouse
此时运行hive的环境已经准备好了,在命令行中键入如下命令开始运行hive:
xuqiang@ubuntu:~
/
hadoop
/
src
/
hive
/
hive-
0.7
.
0
-bin
$
$
HIVE_HOME
/
bin
/
hive
<2>. hive实战
这里我们将完成这样的一个过程,首先创建一个表,从本机上加载数据到该表中,查询该表,得到我们感兴趣的数据。
首先创建表(具体语法将在下面给出):
hive
>
create table cite
(
citing INT
,
cited INT
)
>
row
format
delimited
>
fields terminated by '
,
'
>
stored as textfile
;
创建完表之后,我们可以使用show tables命令查看新建的表:
hive
>
show tables
;
OK
cite
Time
taken:
1.257
seconds
查看新建表的结构:
hive
>
describe cite
;
OK
citing int
cited int
Time
taken:
0.625
seconds
我们加载本地数据到该表中去:
hive
>
load data local inpath '
/
home
/
xuqiang
/
hadoop
/
data
/
cite75_99
.
txt'
>
overwrite into table cite
;
Copying data from file:
/
home
/
xuqiang
/
hadoop
/
data
/
cite75_99
.
txt
Copying file: file:
/
home
/
xuqiang
/
hadoop
/
data
/
cite75_99
.
txt
Loading data to table default
.
cite
Deleted hdfs:
//
localhost:
9000
/
user
/
hive
/
warehouse
/
cite
OK
Time
taken:
89.766
seconds
查询前10行数据:
hive
>
select
* from cite limit
10
;
OK
NULL NULL
3858241
956203
3858241
1324234
3858241
3398406
3858241
3557384
3858241
3634889
3858242
1515701
3858242
3319261
3858242
3668705
3858242
3707004
Time
taken:
0.778
seconds
查询该文件中存在多少条数据,这时hive将执行一个map-reduce的过程来计算该值:
hive
>
select
count
(
1
)
from cite
;
Total MapReduce jobs
=
1
Launching Job
1
out of
1
Number of reduce tasks determined at compile
time
:
1
In order to change the average load
for
a reducer
(
in bytes
)
:
set
hive
.
exec
.
reducers
.
bytes
.
per
.
reducer
=<
number
>
In order to limit the maximum number of reducers:
set
hive
.
exec
.
reducers
.
max
=<
number
>
In order to
set
a constant number of reducers:
set
mapred
.
reduce
.
tasks
=<
number
>
Starting Job
=
job_201106150005_0004
,
Tracking URL
=
http:
//
localhost:
50030
/
jobdetails
.
jsp?jobid
=
job_201106150005_0004
Kill
Command
=
/
home
/
xuqiang
/
hadoop
/
src
/
hadoop-
0.20
.
2
/
bin
/../
bin
/
hadoop job -Dmapred
.
job
.
tracker
=
localhost:
9001
-kill job_201106150005_0004
2011
-
06
-
15
05
:
33
:
20
,
724
Stage-
1
map
=
0
%
,
reduce
=
0
%
2011
-
06
-
15
05
:
33
:
46
,
325
Stage-
1
map
=
2
%
,
reduce
=
0
%
2011
-
06
-
15
05
:
33
:
49
,
827
Stage-
1
map
=
3
%
,
reduce
=
0
%
2011
-
06
-
15
05
:
33
:
53
,
208
Stage-
1
map
=
4
%
,
reduce
=
0
%
2011
-
06
-
15
05
:
33
:
55
,
259
Stage-
1
map
=
7
%
,
reduce
=
0
%
2011
-
06
-
15
05
:
34
:
40
,
450
Stage-
1
map
=
9
%
,
reduce
=
0
%
2011
-
06
-
15
05
:
34
:
52
,
706
Stage-
1
map
=
48
%
,
reduce
=
0
%
2011
-
06
-
15
05
:
34
:
57
,
961
Stage-
1
map
=
50
%
,
reduce
=
0
%
2011
-
06
-
15
05
:
35
:
28
,
420
Stage-
1
map
=
50
%
,
reduce
=
17
%
2011
-
06
-
15
05
:
35
:
36
,
653
Stage-
1
map
=
58
%
,
reduce
=
17
%
2011
-
06
-
15
05
:
35
:
40
,
844
Stage-
1
map
=
61
%
,
reduce
=
17
%
2011
-
06
-
15
05
:
35
:
49
,
131
Stage-
1
map
=
62
%
,
reduce
=
17
%
2011
-
06
-
15
05
:
35
:
56
,
428
Stage-
1
map
=
67
%
,
reduce
=
17
%
2011
-
06
-
15
05
:
36
:
34
,
380
Stage-
1
map
=
90
%
,
reduce
=
17
%
2011
-
06
-
15
05
:
36
:
52
,
601
Stage-
1
map
=
100
%
,
reduce
=
17
%
2011
-
06
-
15
05
:
37
:
10
,
299
Stage-
1
map
=
100
%
,
reduce
=
67
%
2011
-
06
-
15
05
:
37
:
16
,
471
Stage-
1
map
=
100
%
,
reduce
=
100
%
Ended Job
=
job_201106150005_0004
OK
16522439
Time
taken:
274.531
seconds
好的,最后我们删除刚刚新建的表:
hive
>
drop table cite
;
OK
Time
taken:
5.724
seconds
<3>. 存储模型
通常情况下hive将数据存储到hadoop上/user/hive/warehouse目录下,关系型数据库使用索引index去加快查询速度,
而hive使用的是以恶搞所谓的partition
columns的概念,例如比如说存在某一行叫做state,可以根据state中存储的数据值,将state分为50个partitions。如果存在
date列的话,那么通常按照时间进行partition,hive在对分区的列上进行查询的速度会比较快,原因是hadoop在数据存储上将不同的分区
存储在了不同的目录文件下。例如对于上面的列state和date,可能的存储模型如下:
当然每个分区内的数据文件可能还是比较大,幸好在hive中存在一个所谓的buckets的概念,buckets根据hash值将数据分割成更小的数据文件,还是上面的例子,如果使用buckets的话,可能的存储模型如下:
<4>. 深入hql
我们将通过实际hql语句来分析hql的语法。
该条语句创建表page_view,表中有5列,同时在见表语句中指出了各个列的数据类型,在hive中内建支持的数据类型如下:
这些类型的层次结构如下:
层次结构中允许从子类型隐式的转换成父类型。
接着回到上面的见表语句,在列ip中添加了注释:
Ip STRING COMMENT (“Ip address of user”)
然后建表语句中添加了表的分区:
Partitioned by (dt string, country string)
注意的是这里的两列并不是表中的列,实际上这里的分区的两列dt和country仅仅是为了分区,实际上可能并不存储这些数据。
Additionally the partitioned by clause defines the partitioning
columns which are different from the data columns and are actually not
stored with the data. When specified in this way
然后建表语句指定buckets大小,这里是32。
最后指定数据源的文件格式。
好的现在我们给出更多的表操作的例子,由于sql极其相似,这里仅仅给出了语法,并没有给出解释。
描述表page_view结构。
改变表的名字
新增加一行
删除分区
删除表
显示所有的表
从文件page_view.txt文件将数据加载到表page_view中,注意的是这里的路径可以使用绝对路径或者相对路径。这里使用了local,表明数据文件的来源是本地,而不是在hdfs上。
Hql上的查询语句和sql很类似,这里没有一一给出,下面仅仅将给出hql中运算符和内建聚类函数。
运算符:
内建聚类函数:
<5>. 参考资料及代码下载
http://wiki.apache.org/hadoop/Hive/GettingStarted
相关推荐
-IDEA搭建及实战.pdf4.Spark运行架构.pdf5.Hive(上)--Hive介绍及部署.pdf5.Hive(下)--Hive实战.pdf6.SparkSQL(上)--SparkSQL简介.pdf6.SparkSQL(下)--Spark实战应用.pdf6.SparkSQL(中)--深入了解运行计划...
在大数据处理领域,Hive是一个极其重要的工具,它被广泛应用于大数据分析和数据仓库操作。本实战数据集主要涉及两个核心部分:`video`数据和`user`数据,这些都是构建大数据分析模型的基础元素。让我们深入探讨一下...
在HIVE实战测试中,数据通常来自各种来源,如日志文件、交易记录、社交媒体数据等。这些数据经过预处理后,被转化为Hive可识别的格式,如CSV或JSON,然后上传到HDFS(Hadoop分布式文件系统)中。测试数据的选择至关...
### 企业级Hive实战课程知识点详述 #### 一、Hive市场定位与课程背景 随着大数据技术的发展,Hive作为Hadoop生态系统中的一个重要组成部分,对于企业的数据分析和处理起着核心作用。Facebook、淘宝等大型互联网...
这个实战项目的核心是通过Hive对"chbVideoOut"这个文件进行操作,该文件很可能是包含了视频网站用户行为、视频信息或其他相关统计数据的CSV或文本文件。 首先,我们需要了解Hive的基本架构。Hive依赖于Hadoop的...
《Hive实战使用指南》是针对大数据处理领域中Hive工具的一份详尽教程,旨在帮助用户更好地理解和应用Hive进行大数据分析。本指南的创建时间为2016年09月,由以下部分组成: 1. 绪论 1.1 编写背景 在大数据时代,...
在这个“Hive实战项目数据文件和Zeppelin源文件”中,我们很显然会涉及到这两个组件的结合使用。 Hive的核心概念包括表、分区、桶等。表是数据存储的基本单位,用户可以创建、删除和查询表中的数据。分区是对大量...
**Hive实战:统计各种TOP的项目解析** 在大数据处理领域,Apache Hive 是一个非常重要的组件,它提供了SQL-like查询语言(HQL)用于处理存储在Hadoop分布式文件系统(HDFS)上的大规模数据集。本项目以"统计各种TOP...
【Hive实战项目-Youtube视频网站常规指标】 在本Hive实战项目中,主要目标是统计和分析YouTube视频网站的一系列常规指标,包括TopN排名,如观看次数、类别热度、视频类别关联、用户上传量等。这些指标对于理解用户...
Hive入门与实战 PDF
### 大数据技术之Hive学习—Hive实战之谷粒影音+常见错误及解决方案 #### 10.1 需求描述 本实战案例旨在通过对谷粒影音视频网站的大数据分析,提炼出一系列关键指标,包括但不限于视频观看数量、类别热度等Top N...
本实战模拟将带你深入理解Hive如何在电商数据分析中发挥作用,通过`retail_shop_data_analysis_files`这个压缩包中的文件,我们可以探讨以下几个关键知识点: 1. **Hive架构与原理**:Hive是基于Hadoop的数据仓库...
### Hive操作实战详解 在大数据处理领域,Hive作为一个数据仓库工具,被广泛应用于海量数据的存储、查询和分析工作中。本文将通过一系列实战案例,详细介绍Hive的基本操作及其应用场景。 #### 一、Hive基础知识...
hive的安装与配置 一.Hive的安装和配置 1.Hive并不是hadoop自带的组件,因此我们需要去下载hive,此次课我们使用hive 1.2.1版本,下载地址为: 2.下载完成之后,安装包默认保存在下载文件夹中,解压安装包apache-...
【Hive实验报告】 实验报告主要涵盖了Hive的安装、配置以及基本操作,包括DDL(Data Definition Language)和DML(Data Manipulation Language)的使用,Hive与MySQL的交互,UDF(User Defined Function)的开发,...
第1章:Hive基本架构及环境部署 1.MapReduce分析与SQL分析对比 2.Hive的介绍及其发展 3.Hive的安装部署及启动 4.Hive的基本架构讲解 5.安装MySQL作为元数据库存储 6.配置Hive使用MySQL作为元数据库存储 7.Hive中基本...
基于Hive的项目实战视频数据集 videoId string, uploader string, age int, category array, length int, views int, rate float, ratings int, comments int, relatedId array<string>
基于SpringBoot+hive...主要针对计算机相关专业的正在做毕设的学生和需要项目实战的大数据可视化、Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、项目说明等,该项目可以直接作为毕设、课程设计使用。
HIVE优化实战分享 HIVE优化实战分享 HIVE优化实战分享