### Hive外部表创建详解
#### 一、引言
在大数据处理领域,Hive作为一款广泛使用的数据仓库工具,能够高效地对存储在Hadoop文件系统中的数据进行查询与管理。其中,外部表的创建是Hive使用过程中的一个重要概念。本文将详细介绍如何在Hive中创建外部表,并解释其背后的工作原理及相关配置参数。
#### 二、环境需求
为了成功创建并使用Hive外部表,首先需要搭建一个合适的运行环境。具体包括以下组件:
1. **Hadoop**:版本为2.6.0。Hadoop提供了一个分布式文件系统(HDFS),用于存储大规模数据集,并提供了MapReduce编程模型来处理这些数据。
2. **Hive**:版本为1.2.1。Hive是一种基于Hadoop的数据仓库工具,它提供了一种SQL-like的查询语言(HQL),使得用户可以方便地执行数据汇总、排序等操作。
3. **Hue**:版本为3.7.0。Hue是一个基于Web的大数据平台,它可以提供图形界面来操作Hadoop和Hive等组件,方便用户进行数据管理和查询。
#### 三、创建HDFS目录及上传数据
在创建外部表之前,需要先将数据上传到HDFS中。具体步骤如下:
1. **创建HDFS目录**:
```shell
hadoop fs -mkdir /wy/input
```
上述命令会在HDFS根目录下创建一个名为`/wy/input`的新目录。
2. **上传本地数据到HDFS**:
```shell
hadoop fs -put /usr/wy/writing.txt /wy/input
```
这条命令会将本地目录`/usr/wy/writing.txt`中的文件上传至HDFS中的`/wy/input`目录下。
#### 四、创建外部表
外部表是指数据在HDFS上已经有了固定的存放位置,只需要通过Hive定义表结构,即可将这些数据格式化到相应的表结构中。与内部表不同的是,删除外部表时只删除表的元数据信息,而不会删除HDFS上的实际数据。
下面是一个具体的示例代码:
```sql
CREATE EXTERNAL TABLE wxeventmenuclick (
ToUserName VARCHAR(255),
FromUserName VARCHAR(255),
CreateTime VARCHAR(255),
MsgType VARCHAR(255),
Event VARCHAR(255),
EventKey VARCHAR(255)
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\|'
STORED AS TEXTFILE
LOCATION '/wy/wxeventmenuclick';
```
**注释说明**:
1. **ROW FORMAT DELIMITED**:该关键字用来设置创建的表在加载数据时支持的列分隔符。本例中使用`\|`作为列分隔符。
2. **STORED AS file_format**:用来设置加载数据的数据类型。Hive支持的文件格式有TextFile、SequenceFile。对于纯文本数据,可使用`STORED AS TEXTFILE`。若需压缩数据,则使用`STORED AS SEQUENCEFILE`。通常情况下,除非需要保存序列化的对象,否则建议使用`STORED AS TEXTFILE`。
3. **LOCATION**:用于指定HDFS上的路径,即数据的实际存储位置。
#### 五、使用Hue查看表数据
Hue提供了一个友好的图形界面来查看和管理Hive表中的数据。一旦创建好外部表后,可以通过Hue来直观地查看表结构及数据内容。
1. **启动Hue**:确保Hue服务已启动并可通过Web浏览器访问。
2. **打开Hive模块**:在Hue Web界面上选择Hive模块。
3. **浏览或查询表**:在Hive模块中找到创建的外部表`wxeventmenuclick`,可以通过预览功能直接查看表中的数据,或者编写HQL查询语句来获取所需数据。
#### 六、总结
通过上述步骤,我们可以了解到如何在Hadoop环境下使用Hive创建外部表,并掌握相关的配置选项和操作方法。创建外部表不仅有助于更好地组织和管理数据,还能避免因误操作导致的数据丢失问题。希望本文能帮助读者更好地理解和运用Hive外部表功能。