您希望填充关联数组以执行地图侧连接。你决定了 将此信息放在文本文件中,将该文件放入DistributedCache并在您的文件中读取 处理任何记录之前的映射器。 确定您应该使用Mapper中的哪个方法来实现用于读取文件的代码 填充关联数组?
映射还是配置?
答案 0 :(得分:1)
我相信你正在寻找setup()方法。
在每个映射器任务的初始化时调用一次。因此,如果在地图任务开始通过map方法读取键/值对之前有任何想要做的事情(例如,在您的问题中,要从分布式缓存中读取文件并使用信息填充某些成员变量),那就是去做的地方。
答案 1 :(得分:1)
class IndexMapperExample implements Mapper {
void configure(JobConf conf) {
try {
String stopwordCacheName = new Path(HDFS_STOPWORD_LIST).getName();
Path [] cacheFiles = DistributedCache.getLocalCacheFiles(conf);
if (null != cacheFiles && cacheFiles.length > 0) {
for (Path cachePath : cacheFiles) {
if (cachePath.getName().equals(stopwordCacheName)) {
loadStopWords(cachePath);
break;
}
}
}
} catch (IOException ioe) {
System.err.println("IOException reading from distributed cache");
System.err.println(ioe.toString());
}
}
在上面的代码片段中,分配缓存的文件在configure方法中被读取。 这意味着分布式缓存在configure方法中被读取。