博客 Hive实战:网址去重

Hive实战:网址去重

   数栈君   发表于 2024-01-24 10:23  471  0

一、实战概述
在本次实战任务中,我们利用Hive大数据处理框架对三个文本文件(ips01.txt、ips02.txt、ips03.txt)中的IP地址进行了整合与去重。首先,在虚拟机上创建了这三个文本文件,并将它们上传至HDFS的/deduplicate/input目录下作为原始数据源。接着,启动了Hive Metastore服务和客户端,以管理和访问元数据信息。

通过Hive SQL语句创建了一个外部表ips,该表的每一行存储一个IP地址,字段间采用换行符\n进行分隔,这样便能正确读取到HDFS上的原始IP列表数据。为了实现去重目标,进一步创建了新的内部表deduplicated_ips,并使用DISTINCT关键字从ips表中提取出不重复的IP地址记录。

最后,执行SQL查询语句查看deduplicated_ips表的内容,如果输出结果中不存在重复IP,则表示去重过程顺利完成。整个过程展示了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
1
2
3
4
5
6
7
8
9
10
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
1
2
3
4
5
6
7
8
9
10
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
2
3
4
5
6
7
8
9
10
使用Hive框架,实现网址去重
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/55dd890b9f0082100aec96ae3b2224fc..png
  
三、完成任务
(一)准备数据
1、在虚拟机上创建文本文件
在master虚拟机上使用文本编辑器创建三个文件:ips01.txt, ips02.txt, ips03.txt,并确保每个文件内存储的是纯文本格式的IP地址列表。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/813c09503de8c037941f79405d6e4d23..png
  
2、上传文件到HDFS指定目录
在master虚拟机上创建HDFS上的/deduplicate/input目录,用于存放待处理的原始数据文件。
执行命令:hdfs dfs -mkdir -p /deduplicate/input
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/03df0178a2b77515fe14f6d1270d45b5..png
  
将本地创建的三个文本文件上传至HDFS的/deduplicate/input目录
hdfs dfs -put ips01.txt /deduplicate/input/
hdfs dfs -put ips02.txt /deduplicate/input/
hdfs dfs -put ips03.txt /deduplicate/input/
1
2
3
执行上述命令
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/7bf26f555fed0d0d2814148cb6baab01..png
  
(二)实现步骤
1、启动Hive Metastore服务
执行命令:hive --service metastore &,在后台启动metastore服务
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/539c53981a72fde6c0b0299f4859be2c..png
  
2、启动Hive客户端
执行命令:hive,看到命令提示符hive>
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/58d58dfb8dd3a82e3795846ba974be3d..png
   
3、基于HDFS数据文件创建Hive外部表
基于HDFS数据文件创建Hive外部表,执行语句
CREATE EXTERNAL TABLE ips (ip STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\n'
LOCATION '/deduplicate/input';
1
2
3
这里创建了一个名为ips的外部表,字段为单列ip,每一行代表一个IP地址。由于我们的数据文件中每个IP地址占一行,所以字段间用换行符\n分隔。
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0ee568c32ba54a431e569bc5862d785f..png
  
4、利用Hive SQL实现去重
基于查询结果创建新表
CREATE TABLE deduplicated_ips AS
SELECT DISTINCT ip FROM ips;
1
2
通过上述SQL语句,我们在Hive内部创建了一个新的表deduplicated_ips,其中存储了从unique_ips表中提取的所有不重复的IP地址。
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/cd2e0b98b4fc76327f4640d5baf65418..png
  
5、检查是否实现去重
最后,检查deduplicated_ips表的内容以确认去重是否成功执行
执行语句:SELECT * FROM deduplicated_ips;
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/26c824289dea31f2fc20aa5ce50224a4..png
  
若输出结果中没有重复的IP地址,则说明去重任务已经顺利完成。
四、实战总结
本实战通过Hive对三个文本文件中的IP地址数据进行整合去重。首先在虚拟机创建并上传文本至HDFS,接着启动Hive服务与客户端,创建外部表加载数据,并用DISTINCT从原始表中提取不重复IP至新内部表,最终成功实现去重目标,展示了Hive处理大规模文本数据的高效能与便捷性。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/howard2005/article/details/135376811

免责申明:

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!


《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack  
0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群