Mapreduce 将多个文件读取到map-reduce中的分布式缓存

Mapreduce 将多个文件读取到map-reduce中的分布式缓存,mapreduce,distributed-cache,Mapreduce,Distributed Cache,我目前正在尝试向分布式缓存添加两个文件。但是,当我试图读取它时,第二个文件正在读取与第一个文件相同的数据,尽管这两个文件包含完全不同的数据。知道为什么会发生这种情况吗?很可能是您实际配置作业,然后在映射器中访问作业的方式。当你开始工作的时候,你会做一些类似的事情 job.addCacheFile(new Path("cache/file1.txt").toUri()); job.addCacheFile(new Path("cache/file2.txt").toUri()); 然后在映射

我目前正在尝试向分布式缓存添加两个文件。但是,当我试图读取它时,第二个文件正在读取与第一个文件相同的数据,尽管这两个文件包含完全不同的数据。知道为什么会发生这种情况吗?

很可能是您实际配置作业,然后在映射器中访问作业的方式。当你开始工作的时候,你会做一些类似的事情

 job.addCacheFile(new Path("cache/file1.txt").toUri());
 job.addCacheFile(new Path("cache/file2.txt").toUri());
然后在映射程序代码中,URL将存储在一个数组中,可以像这样访问

 URI file1Uri = context.getCacheFiles()[0];
 URI file2Uri = context.getCacheFiles()[1];

如果访问文件的过程不起作用,实际文件可能会出现问题

我正在使用分布式缓存。但当我尝试使用以下命令读取这两个文件时:Path p1=DistributedCache.getLocalCacheFile(context.getConfiguration())[0];路径p2=DistributedCache.getLocalCacheFile(context.getConfiguration())[1];虽然我添加了两个不同的文件,但这两个路径的值是相同的。您需要进行一些调试。只需尝试添加更多缓存文件或打印分布式缓存的所有结果。