首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mapreduce示例中的TotalOrderPartitioner

Mapreduce示例中的TotalOrderPartitioner
EN

Stack Overflow用户
提问于 2014-05-15 18:12:51
回答 2查看 1.9K关注 0票数 1

我正在尝试运行亚历克斯·霍姆斯的书“https://github.com/alexholmes/hadoop-book/blob/master/src/main/java/com/manning/hip/ch4/sort/total/TotalSortMapReduce.java”中提供的示例。

然而,当我在创建一个jar之后运行相同的程序时,我得到了一个异常:

线程"main“中的异常:1在org.apache.hadoop.mapred.lib.InputSampler.writePartitionFile(InputSampler.java:338) at com.manning.hip.ch4.sort.total.TotalSortMapReduce.runSortJob(TotalSortMapReduce.java:44) at com.manning.hip.ch4.sort.total.TotalSortMapReduce.main(TotalSortMapReduce.java:12)

有人能帮我理解如何运行代码吗?我提出了以下论点。Names.txt的输入路径(需要排序的文件)。在hadoop。

>应该生成的样例分区文件。哈多普之路。

args2 2->输出目录,其中排序的文件应该被分类。

请指导我运行这段代码的方法。

EN

回答 2

Stack Overflow用户

发布于 2015-05-15 07:47:52

造成此问题的原因可能是输入数据文件非常小,但在代码中:

代码语言:javascript
复制
InputSampler.Sampler<Text, Text> sampler =
        new InputSampler.RandomSampler<Text,Text>
            (0.1,
             10000,
             10); 

maxSplitsSampled中将RandomSampler<Text,Text> (double freq, int numSamples, int maxSplitsSampled)设置为10,可以通过将该参数设置为1来解决问题,或者只需确保它不大于输入文件的拆分数。

票数 2
EN

Stack Overflow用户

发布于 2020-12-04 14:33:17

所以,我知道这条线已经有5年多了,但是今天我遇到了同样的问题,迈克的回答对我来说不管用。(我认为,到目前为止,hadoop内部还确保不超过可用的拆分数)。

然而,我发现是什么引起了我的问题,所以我发布了这篇文章,希望它能帮助那些谷歌搜索把他们带到这个真正古老的hadoop线程的人。

在我的例子中,问题是我指定的输入文件的样本太少,而我的采样频率太低。在这种情况下,你可能会产生比你指定的减速器数量更少的样本(不是每次,提醒你,只是有时真的让你发疯)。每次发生这种情况,我的系统都会出现以下错误消息:

代码语言:javascript
复制
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 9 out of bounds for length 9
        at org.apache.hadoop.mapreduce.lib.partition.InputSampler.writePartitionFile(InputSampler.java:336)
        at ...

例如,在这种情况下,只生成了9个样本,我尝试使用了9个以上的减速器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23685734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档