- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 ChainMapper,它关联了 2 个映射器。我正在尝试对链中的最后一个映射器执行 TotalOrderPartition,但没有取得很大成功。
有没有办法根据链中第 N 个映射器的一些采样来强制执行分区?
public class WordCountChain extends Configured implements Tool
{
@Override
public int run(String[] args) throws Exception
{
Job job = new Job(getConf(), "Word Count V1 (Chain)");
job.setJarByClass(getClass());
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
/*********** First Mapper ***********/
Configuration wcpMapperConf = new Configuration(false);
ChainMapper.addMapper(job, WordCountPreparationMapper.class, LongWritable.class, Text.class, Text.class, IntWritable.class, wcpMapperConf);
/*********** Second Mapper ***********/
Configuration wcMapperConf = new Configuration(false);
ChainMapper.addMapper(job, Mapper.class, Text.class, IntWritable.class, Text.class, IntWritable.class, wcMapperConf);
/******* This enforces the Sampling/Partitioning over the First Mapper *******/
//job.setInputFormatClass(SequenceFileInputFormat.class);
//InputSampler.Sampler<Text, IntWritable> sampler = new InputSampler.RandomSampler<Text, IntWritable>(0.1, 10000, 10);
//InputSampler.writePartitionFile(job, sampler);
//job.addCacheFile( new URI( TotalOrderPartitioner.getPartitionFile(getConf()) ) );
job.setNumReduceTasks(10);
job.setReducerClass(WordCountReducer.class);
return (job.waitForCompletion(true) ? 0 : 1);
}
public static void main(String[] args) throws Exception
{
int exitCode = ToolRunner.run(new WordCountChain(), args);
System.exit(exitCode);
}
}
最佳答案
不幸的是,RandomSampler 在作业开始之前运行,实际上它在您调用时运行
InputSampler.writePartitionFile(job, sampler);
这意味着它不在任何 Mapper 的输出上运行,而是在作业的输入数据集上运行。
如果您需要根据第 N 个 Mapper 的输出进行分区,您可以将作业拆分为两个作业,一个 map-only 作业和一个 mapreduce 作业。第一个将运行映射器链直到第 N 个映射器,然后只存储它的输出。第二个作业将根据输入(这将是第 N 个 Mapper 的输出)进行采样和分区,然后运行其余的 Mappers 和你的 Reducer。
关于hadoop - TotalOrderPartion 与 ChainMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35934296/
我正在尝试在单个程序中添加多个映射器。 这里有两个 Mapper 类和 ChainMapper 相同。但是当我在 addMapper 中添加 Mapper 时出现错误。 The method addM
这个问题在这里已经有了答案: Hadoop mapreduce : Driver for chaining mappers within a MapReduce job (4 个答案) 关闭 3 年
我有一个 ChainMapper,它关联了 2 个映射器。我正在尝试对链中的最后一个映射器执行 TotalOrderPartition,但没有取得很大成功。 有没有办法根据链中第 N 个映射器的一些采
您好,我目前面临 Java 泛型的问题:我需要使用的方法有这个签名 static void addMapper(JobConf job, Class> klass,
我需要将我的 Map Reduce jar 文件拆分为两个作业,以便获得两个不同的输出文件,一个来自两个作业的每个 reducer。 我的意思是第一个作业必须生成一个输出文件,该文件将作为链中第二个作
我想链接多个 mapreduce 作业,即前一个 mapreduce 作业的输出是下一个 mapreduce 作业的输入。因为我的输出非常大,磁盘 IO 过载非常重,我想找到替代解决方案来减少 IO
与通常的链式任务(映射 -> 减少 -> 映射 -> 减少)。是否有使用其中任何一个的规范示例或 killer 级应用程序?或者,是否有一些知名的系统/应用程序使用它们中的任何一个? 最佳答案 我认为
我是一名优秀的程序员,十分优秀!