一、实战概述
二、提出任务
- 使用Hive框架,实现网址去重
三个包含了网址的文本文件(ips01.txt、ips02.txt、ips03.txt) - ips01.txt
192.168.1.1
172.16.0.1
10.0.0.1
192.168.1.2
192.168.1.3
172.16.0.2
10.0.0.2
192.168.1.1
172.16.0.1
10.0.0.3
- ips02.txt
192.168.1.4
172.16.0.3
10.0.0.4
192.168.1.5
192.168.2.1
172.16.0.4
10.0.1.1
192.168.1.1
172.16.0.1
10.0.0.1
- ips03.txt
192.168.1.6
172.16.1.1
10.0.2.1
192.168.1.7
192.168.3.1
172.16.0.5
10.0.0.5
192.168.1.1
172.16.0.1
10.0.0.3
三、完成任务
(一)准备数据
1、在虚拟机上创建文本文件
- 在master虚拟机上创建包含了网址的文本文件(
ips01.txt
、ips02.txt
、ips03.txt
)
2、启动Hadoop服务
- 执行命令:
start-all.sh
3、将文本文件上传到HDFS指定目录
- 在master虚拟机上创建HDFS上的
/deduplicate/input
目录,用于存放待处理的原始数据文件。
- 将本地创建的三个文本文件上传至HDFS的/deduplicate/input目录
(二)实现步骤
1、启动Hive Metastore服务
- 我们需要启动Hive Metastore服务,这是Hive的元数据存储服务。
执行命令:hive --service metastore &
2、启动Hive客户端
- 执行命令:
hive
,看到命令提示符hive>
3、基于HDFS数据文件创建Hive外部表
- 基于HDFS数据文件创建Hive外部表
执行语句:CREATE EXTERNAL TABLE ips (ip STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\n' LOCATION '/deduplicate/input';
- 这里创建了一个名为ips的外部表,字段为单列ip,每一行代表一个IP地址。由于我们的数据文件中每个IP地址占一行,所以字段间用换行符\n分隔。
4、利用Hive SQL实现去重
- 基于查询结果创建新表
执行语句:CREATE TABLE deduplicated_ips AS SELECT DISTINCT ip FROM ips;
- 通过上述SQL语句,我们在Hive内部创建了一个新的表
deduplicated_ips
,其中存储了从unique_ips
表中提取的所有不重复的IP地址。
5、检查是否实现去重
-
检查
deduplicated_ips
表的内容以确认去重是否成功执行
执行语句:SELECT * FROM deduplicated_ips;
-
若输出结果中没有重复的IP地址,则说明去重任务已经顺利完成。
四、实战总结
本实战通过Hive对三个文本文件中的IP地址数据进行整合去重。首先在虚拟机创建并上传文本至HDFS,接着启动Hive服务与客户端,创建外部表加载数据,并用DISTINCT从原始表中提取不重复IP至新内部表,最终成功实现去重目标,展示了Hive处理大规模文本数据的高效能与便捷性。