java mapreduce二次排序
原文链接:
https://www.toutiao.com/i6765808056191156748/
目的:
二次排序就是有下面的数据
a 3
a 1
a 100
c 1
b 2
如果只按照abc排序就会变成
a 3
a 1
a 100
b 2
c 1
我们希望是第二列也参与排序
a 1
a 3
a 100
b 2
c 1
创建Maven项目
配置POM文件
我们
我们自定义Writable类,方便我们序列化
添加属性 代表key-value的两个部分
编写构造方法
编写一个set方法,方便我们使用
编写序列化和反序列化方法
编写比较方法
创建Mapper,注意输出的部分是自己创建的数据类型
编写内容
创建Comparator类,自定义分组
编写代码
创建Partition类,自定义分区类
创建Reduce类
编写内容
创建主类,完成主类的编写
其中自定义部分的类,我们放入到主方法中
自定义分区类和自定义分组类
准备数据源
我们将项目打包上传到Linux上
启动Hadoop
将数据上传到HDFS上
hdfs dfs -mkdir /secondSort
hdfs dfs -put /data/secondSort/data.txt /secondSort/
hdfs dfs -ls /secondSort/
我们执行我们的jar
yarn jar /data/secondSort/secondSort.jar com.xlglvc.xxx.mapredece.secondSort.SecondSortDriver /secondSort/data.txt /secondSortoutput
出现问题:
经过排查,发现是我的数据不是用\t隔开的,于是重新处理数据
然后删除HDFS上的data.txt,将新的data.txt文件上传,重新执行jar文件,我们观看结果
然后我们查看生成的文件,是按照我们预想的结果完成了二次排序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构