MapReduce实现城市薪资排序,并取前N个城市

程序功能

重写mapper和reducer方法,实现城市薪资排序并取前n名,如读取hdfs里/123/city.txt路径下的文件得到 城市名,平均薪资,在hdfs新文件/123/456里输出“经过排序”的 城市名与平均薪资

举例如下:

运行前hdfs的一个文件里放置了城市名称与薪资

[root@hadoop ttt]# hdfs dfs -cat /123/city.txt
2022-11-10 10:49:30,423 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
全国	97379
北京	178178
天津	114682
河北	77323
山西	74739
内蒙古	85310
辽宁	79472
吉林	77995
黑龙江	74554
上海	171884
江苏	103621
浙江	108645
安徽	85854
福建	88149
江西	78182
山东	87749
河南	70239
湖北	85052
湖南	79122
广东	108045
广西	82751
海南	86609
重庆	93816
四川	88559
贵州	89228
云南	93133
西藏	121005
陕西	83520
甘肃	79730
青海	101401
宁夏	97438
新疆	86343

运行后,在另一个hdfs的文件里的内容显示了平均薪资前十的城市名称与对应平均薪资

[root@hadoop ttt]# hdfs dfs -cat /123/123/part-r-00000
2022-11-10 10:50:47,946 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
北京	178178
上海	171884
西藏	121005
天津	114682
浙江	108645
广东	108045
江苏	103621
青海	101401
宁夏	97438
全国	97379

具体实现

  1. 因为要操作hdfs,需要先打开虚拟机,为方便查看结果,需要打开相关的node(前提是做好启动node的相关配置)以及关闭防火墙

    [root@hadoop ttt]# start-dfs.sh
    Starting namenodes on [hadoop]
    Last login: Thu Nov 10 10:53:07 GMT 2022 on pts/0
    Starting datanodes
    Last login: Thu Nov 10 10:53:18 GMT 2022 on pts/0
    Starting secondary namenodes [hadoop]
    Last login: Thu Nov 10 10:53:21 GMT 2022 on pts/0
    [root@hadoop ttt]# start-yarn.sh
    Starting resourcemanager
    Last login: Thu Nov 10 10:53:28 GMT 2022 on pts/0
    Starting nodemanagers
    Last login: Thu Nov 10 10:53:40 GMT 2022 on pts/0
    [root@hadoop ttt]# jps
    7569 Jps
    7236 NodeManager
    7097 ResourceManager
    6491 NameNode
    6844 SecondaryNameNode
    6622 DataNode
    [root@hadoop ttt]# systemctl stop firewalld
    
    
    //关闭防火墙
    systemctl stop firewalld
    //查看防火墙是否关闭
    firewall-cmd --state
    

​ 运行开启之后输入http://ip:9870(ip在VmVare虚拟机>编辑>虚拟网络编辑器>NAT设置>子网IP查看,最后一位是自己之前在配置文件里设置的)

  1. 创建maven项目(方便导入jar包)

  2. 配置pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>MapReduce2022_11_08</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-client</artifactId>
                <version>3.2.1
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值