Hive数据处理实战:从安装到数据分析
立即解锁
发布时间: 2025-08-23 02:18:20 阅读量: 2 订阅数: 7 

### Hive数据处理实战:从安装到数据分析
#### 1. Hive安装前提与获取
Hive通常需要一个现有的Hadoop集群来运行。它可以在满足以下条件的任何主机上执行:
- 主机上安装了Hadoop(即使没有进程在运行)。
- 设置了`HADOOP_HOME`环境变量,并指向Hadoop的安装位置。
- 将`${HADOOP_HOME}/bin`目录添加到系统或用户路径中。
你可以从[http://hive.apache.org/releases.html](http://hive.apache.org/releases.html)下载最新的稳定版Hive。同时,[http://cwiki.apache.org/confluence/display/Hive/GettingStarted](http://cwiki.apache.org/confluence/display/Hive/GettingStarted)的Hive入门指南会提供版本兼容性的建议,一般来说,最新的稳定版Hive、Hadoop和Java应该可以协同工作。
#### 2. Hive安装步骤
以下是安装Hive的具体步骤:
1. 下载最新稳定版的Hive,并将其移动到你希望安装的位置:
```bash
$ mv hive-0.8.1.tar.gz /usr/local
```
2. 解压包:
```bash
$ tar –xzf hive-0.8.1.tar.gz
```
3. 设置`HIVE_HOME`变量为安装目录:
```bash
$ export HIVE_HOME=/usr/local/hive
```
4. 将Hive主目录添加到路径变量中:
```bash
$ export PATH=${HIVE_HOME}/bin:${PATH}
```
5. 在HDFS上创建Hive所需的目录:
```bash
$ hadoop fs -mkdir /tmp
$ hadoop fs -mkdir /user/hive/warehouse
```
6. 使这两个目录具有组可写权限:
```bash
$ hadoop fs -chmod g+w /tmp
$ hadoop fs -chmod g+w /user/hive/warehouse
```
7. 尝试启动Hive:
```bash
$ hive
```
你将收到以下响应:
```plaintext
Logging initialized using configuration in jar:file:/opt/hive-0.8.1/lib/hive-common-0.8.1.jar!/hive-log4j.properties
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201203031500_480385673.txt
hive>
```
8. 退出Hive交互式shell:
```bash
$ hive> quit;
```
#### 3. Hive安装后的理解
下载并解压最新稳定版的Hive后,我们设置了`HIVE_HOME`和路径变量。为了避免每次登录都设置这些变量,可以将它们添加到shell登录脚本或单独的配置脚本中。在HDFS上创建的`/tmp`和`/user/hive/warehouse`目录分别用于存储Hive在查询执行期间创建的临时数据和表数据。
#### 4. 使用Hive导入和分析UFO数据集
导入新数据到Hive通常有三个阶段:
1. 创建要导入数据的表的规范。
2. 将数据导入到创建的表中。
3. 对表执行HiveQL查询。
#### 5. 创建UFO数据表
以下是创建UFO数据表的步骤:
1. 启动Hive交互式shell:
```bash
$ hive
```
2. 创建UFO数据集的表,为了便于阅读,将语句拆分成多行:
```sql
hive> CREATE TABLE ufodata(sighted STRING, reported STRING,
sighting_location STRING, shape STRING, duration STRING,
description STRING COMMENT 'Free text description')
COMMENT 'The UFO data set.' ;
```
完成后,你应该看到以下输出:
```plaintext
OK
Time taken: 0.238 seconds
```
3. 列出所有现有表:
```sql
hive> show tables;
```
输出如下:
```plaintext
OK
ufodata
Time taken: 0.156 seconds
```
4. 显示匹配正则表达式的表:
```sql
hive> show tables '.*data';
```
输出如下:
```plaintext
OK
ufodata
Time taken: 0.065 seconds
```
5. 验证表的规范:
```sql
hive> describe ufodata;
```
输出如下:
```plaintext
OK
sighted string
reported string
sighting_location string
shape string
duration string
description string Free text description
Time taken: 0.086 seconds
```
6. 显示表的更详细描述:
```sql
hive> describe extended ufodata;
```
输出包含表的详细信息,部分内容如下:
```plaintext
OK
sighted string
reported string
…
Detailed Table Information Table(tableName:ufodata,
dbName:default, owner:hadoop, createTime:1330818664,
lastAccessTime:0, retention:0,
…
…location:hdfs://head:9000/user/hive/warehouse/
ufodata, inputFormat:org.apache.hadoop.mapred.
TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.
HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1,
```
#### 6. 执行步骤的理解
使用`CREATE TABLE`命令定义UFO数据表的结构,每个列都有名称和数据类型,HiveQL还支持对列和表添加注释。创建表后,使用`SHOW TABLES`语句验证表的创建,使用`DESCRIBE TABLE`和`DESCRIBE TABLE EXTENDED`命令分别验证表的规范和获取更详细的信息。需要注意的是,HiveQL和SQL一样,关键字、列和表名不区分大小写,但为了规范,SQL语句通常使用大写关键字。
#### 7. 插入UFO数据
插入UFO数据的步骤如下:
1. 将UFO数据文件复制到HDFS:
```bash
$ hadoop fs -put ufo.tsv /tmp/ufo.tsv
```
2. 确认文件已复制:
```bash
$ hadoop fs -ls /tmp
```
输出如下:
```plaintext
Found 2 items
drwxrwxr-x - hadoop supergroup 0 … 14:52 /tmp/hive-hadoop
-rw-r--r-- 3 hadoop supergroup 75342464 2012-03-03 16:01 /tmp/ufo.tsv
```
3. 进入Hive交互式shell:
```bash
$ hive
```
4. 将先前复制的文件中的数据加载到`ufodata`表中:
```sql
hive> LOAD DATA INPATH '/tmp/ufo.tsv' OVERWRITE INTO TABLE ufodata;
```
输出如下:
```plaintext
Load
```
0
0
复制全文
相关推荐










