Mapreduce实例——Map端join使用addCacheFile()方法报错,找不到文件

解决方法:将找不到的文件放进项目的根目录下

原因不清楚。

但是发现日志里有一条记录不正常,于是想到把文件放根目录试试

2021-11-18 23:20:36,770 WARN  [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:symlink(201)) - Failed to create symlink: \tmp\hadoop-wuhao\mapred\local\job_local1290197105_0001_a1814cc0-1378-4a60-bfef-7c0838160efe\orders <- D:\IntelliJ IDEA 2020.3.1\IdeaProjects\MapreduceDemo/orders

补充:

为了支持文件的复制,Hadoop提供了一个类DistributedCache,使用该类的方法如下:

(1)用户使用静态方法DistributedCache.addCacheFile()指定要复制的文件,它的参数是文件的URI(如果是HDFS上的文件,可以这样:hdfs://namenode:9000/home/XXX/file,其中9000是自己配置的NameNode端口号)。JobTracker在作业启动之前会获取这个URI列表,并将相应的文件拷贝到各个TaskTracker的本地磁盘上。

(2)用户使用DistributedCache.getLocalCacheFiles()方法获取文件目录,并使用标准的文件读写API读取相应的文件。

类似:【MapReduce】报错:java.io.FileNotFoundException: \user\MR\input\information.txt (系统找不到指定的路径。)_Riding the snail chase missiles ~-CSDN博客

原文地址:https://www.cnblogs.com/Arisf/p/15574915.html