我遇到链接多个mapreduce工作的问题。
目前的情况如下: 应用程序处理2个数据源,每个数据源使用来自2个不同目录的“MultipleInputs”进入单独的映射器
First Job读取2个Mappers中的输入,使用“MultipleOutputs”处理数据并在2个不同目录上输出数据。
现在,第二个作业应该使用第一个作业的相同任务ID处理第一个任务的输出。
例如,
Job1: 2个不同的Mappers,1个Reducer
Mapper1_1读取datasource1目录,创建2个任务来处理它们并输出ds1 / ds1-m-00000和ds1 / ds1-m-00001中间文件
Mapper1_2读取datasource2目录,创建1个任务来处理它并输出ds2 / ds2-m-00002中间文件
Reducer1进行一些计算并输出一些统计数据
Job2: 2个不同的Mappers,1个Reducer
Mapper2_1读取ds1目录,创建2个任务来处理2个中间文件。
Mapper2_2读取ds2目录,创建1个任务来处理中间文件。
Reducer2进行一些计算以输出最终结果
由于某些原因,必须在第二个作业中使用相同的任务ID作为第一个作业中生成的任务ID,但实际上,任务ID是随机生成的,有时在第二个作业中生成,它们像第一个作业一样生成过程成功完成,有时不成功。
是否有控制为2个作业生成相同的任务ID或任何其他方法生成唯一编号以识别两个作业中的同一文件?