如何在Hadoop里面实现二次排序

如何在Hadoop里面实现二次排序,第1张

:(Partition)分区出现的必要性,如何使用Hadoop产生一个全局排序的文件?最简单的唤源方法就是使用一个分陆改区,但是该方法在处理大型文件时效率极低,因为一台机器必须处理所有输出文件,从而完全丧失了MapReduce所提供的并行架构早链判的优势。

这是MapReduce做排序

有两种做法消此,一种是蠢桥友一个reducer 然后带槐内部排序

另外一个是重写partitioner

可以去搜搜MapReduce做排序

include <stdio.h>int main(){ int arr1[20], arr2[20], sum[20] = {0}int count = 0, a, b, i, tempscanf("%d %d", &a, &b)while (a != 0 || b != 0) { arr1[count] = a % 10arr2[count] = b % 10a /= 10b /= 10count++} for (i = 0i <counti++) { temp = arr1[i] + arr2[i]sum[i] += temp % 10sum[i + 1] = temp / 10} if (sum[count]) printf("%d", sum[count])else printf("%d", sum[count - 1])return 0}把两个数拆开,每个位相加,处理进位。因为这是加法,所以结果的长度和两数中最蚂老长的那个相同,或者正罩比它大1,举物闹if判断一下哪个是最高位就行了。sum存储的是两数和的每一位,它的所有元素的初始值都被置为0.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12312668.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存