我需要一个在reduce任务之间共享的变量,每个reduce任务都可以原子方式读取和写入。 我需要这样一个变量的原因是为reduce任务创建的每个文件提供一个唯一的标识符(reduce任务创建的文件数量不确定)。
由于
答案 0 :(得分:1)
在我的理解中,ZooKeeper专门用于维护对群集范围变量的原子访问。
答案 1 :(得分:0)
我建议使用FileSystem.createNewFile()
。
看看这里:
答案 2 :(得分:0)
Reducer生成的所有outout文件已经具有唯一的名称part-r-00001等。 如果您需要代码中的数字,可以阅读分区编号。
必须保证唯一的集中计数器打破了Hadoop的大量可扩展性。
因此,如果您需要不同的东西,那么我会使用类似于reducer的任务ID的Sha1来获得在多个作业中唯一的东西。