gpt4 book ai didi

hadoop - hadoop 上的 FileNotFoundException

转载 作者:行者123 更新时间:2023-12-02 21:55:45 25 4
gpt4 key购买 nike

在我的 map 函数中,我试图从分布式缓存中读取一个文件,将其内容加载到哈希映射中。

MapReduce 作业的 sys 输出日志打印 hashmap 的内容。这表明它已找到文件,已加载到数据结构中并执行了所需的操作。它遍历列表并打印其内容。从而证明操作是成功的。

但是,在运行 MR 作业几分钟后,我仍然收到以下错误:

27 年 13 月 1 日 18:44:21 信息 mapred.JobClient:任务 ID:尝试_201301271841_0001_m_000001_2,状态:失败
java.io.FileNotFoundException:文件不存在:/app/hadoop/jobs/nw_single_pred_in/predict
在 org.apache.hadoop.hdfs.DFSClient$DFSInputStream.openInfo(DFSClient.java:1843)
在 org.apache.hadoop.hdfs.DFSClient$DFSInputStream.(DFSClient.java:1834)
在 org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:578)
在 org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:154)
在 org.apache.hadoop.fs.FileSystem.open(FileSystem.java:427)
在 org.apache.hadoop.mapreduce.lib.input.LineRecordReader.initialize(LineRecordReader.java:67)
在 org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:522)
在 org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:763)
在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
在 org.apache.hadoop.mapred.Child$4.run(Child.java:255)
在 java.security.AccessController.doPrivileged( native 方法)
在 javax.security.auth.Subject.doAs(Subject.java:396)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
在 org.apache.hadoop.mapred.Child.main(Child.java:249)

这是使用要放置在分布式缓存中的文件的位置初始化 Path 的部分

//在 main 内部,被 try catch block 包围,但这里没有抛出异常
配置 conf = new Configuration();
//与 conf 相关的其他内容
路径知识filepath = new Path(args[3]);//args[3] =/app/hadoop/jobs/nw_single_pred_in/predict/knowledge.txt
DistributedCache.addCacheFile(knowledgefilepath.toUri(), conf);
job.setJarByClass(NBprediction.class);
//其他作业设置
作业.waitForCompletion(true);//开始加载

这个在 map 函数里面:

尝试 {
System.out.println("里面试试!!");
路径文件[]= DistributedCache.getLocalCacheFiles(context.getConfiguration());
路径 cfile = new Path(files[0].toString());//只有一个文件
System.out.println("文件路径:"+cfile.toString());
CSVReader reader = new CSVReader(new FileReader(cfile.toString()),'\t');
而 ((nline=reader.readNext())!=null)
data.put(nline[0],Double.parseDouble(nline[1]));//加载到哈希图中
}
捕获(异常 e)
{//处理异常 }

帮助表示赞赏。

干杯!

最佳答案

做了一个全新的hadoop安装并用同一个jar运行了这个工作,问题就消失了。似乎是一个错误而不是编程错误。

关于hadoop - hadoop 上的 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553296/

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