gpt4 book ai didi

hadoop - 使用分布式缓存读取文件

转载 作者:行者123 更新时间:2023-12-02 20:12:29 24 4
gpt4 key购买 nike

我在分布式缓存中存储了很多文件,每个文件对应一个用户ID。我想将与特定用户ID(这将是化简器的键)相对应的特定文件附加到特定的化简任务。但是我无法这样做,因为我使用configure方法从分布式缓存中读取文件,该方法在reduce类中的reduce方法之前。因此,我无法在reduce类的configure方法中访问reduce方法的键,因此无法仅读取我想要的文件。请帮助我。

class reduce{

void configure(args)
{

/*I can a particular file from the Path[] here.
I want to select the file corresponding to the key of the reduce method and pass its
contents to the reduce method. I am not able to do this as I can't access the key of
the reduce method.*/

}

void reduce(args)
{
}


}

最佳答案

一种解决方案是在配置步骤中按照DistributedCache javadocs中的描述将DistributedCache中的Path数组分配给类变量。当然,将 map 代码替换为您的简化代码。

这是使用旧的API,看起来就像您的代码正在使用。

 public static class MapClass extends MapReduceBase  
implements Mapper<K, V, K, V> {

private Path[] localArchives;
private Path[] localFiles;

public void configure(JobConf job) {
// Get the cached archives/files
localArchives = DistributedCache.getLocalCacheArchives(job);
localFiles = DistributedCache.getLocalCacheFiles(job);
}

public void map(K key, V value,
OutputCollector<K, V> output, Reporter reporter)
throws IOException {
// Use data from the cached archives/files here
// ...
// ...
output.collect(k, v);
}
}

关于hadoop - 使用分布式缓存读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12589899/

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