在Hadoop中使用DistributedCache时,我设法从驱动程序类中的hdfs推送文件,如下所示:
FileSystem fileSystem = FileSystem.get(getConf());
DistributedCache.createSymlink(conf);
DistributedCache.addCacheFile(fileSystem.getUri().resolve("/dumps" + "#" + "file.txt"), job.getConfiguration());
然后,要读取文件,请在Mapper的setup()中执行:
Path localPaths[] = context.getLocalCacheFiles();
该文件位于缓存中,位于路径/tmp/solr-map-reduce/yarn-local-dirs/usercache/user/appcache/application_1398146231614_0045/container_1398146231614_0045_01_000004/file.txt下。但是当我读它时,我得到IOException:file是一个目录。
怎样才能解决这个问题?