gpt4 book ai didi

hadoop - Hadoop中NullWritable键类型的Mapreduce自定义分区

转载 作者:行者123 更新时间:2023-12-02 21:05:04 27 4
gpt4 key购买 nike

我有一个要求,我只需要HBase的值而不需要行键就可以写入输出文件。
为此,我将NullWritable.class用作 map 输出键类型。
现在我必须基于column值对我的输出数据进行分区。但是,正如我们所知,自定义分区基于键工作,为此,我遇到了异常。

Caused by: java.io.IOException: Illegal partition for (null) (40)

这正是我在MapTask.class中得到异常的地方
 if (partition < 0 || partition >= partitions) {
throw new IOException("Illegal partition for " + key + " (" +
partition + ")");
}

在这里,我的分区值如何为1,并将其与我的return int分区40进行比较,然后抛出异常

这是我正在使用的驱动程序代码。
TableMapReduceUtil.initTableMapperJob(args[0], // input table
scan, // Scan instance to control CF and attribute selection
DefaultMapper.class, // mapper class
NullWritable.class, // mapper output value
Text.class, // mapper output key
job);

这是我的分区代码
public class FinancialLineItemPartioner extends Partitioner< NullWritable,Text> {
public int getPartition(NullWritable key, Text value, int setNumRedTask) {
String str = key.toString();
if (str.contains("Japan|^|BUS")) {
return 0;
} else if (str.contains("Japan|^|CAS")) {
return 1;
} else if (str.contains("Japan|^|CUS")) {
return 2;
}else {
return 3;
}

请建议..

注意:如果我互换了map-output键/值参数,那么我的reducer无法正常工作。

最佳答案

问题出在VM中。在集群环境中,相同的代码可以正常工作。

关于hadoop - Hadoop中NullWritable键类型的Mapreduce自定义分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42184717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com