当前位置: 首页 > 知识库问答 >
问题:

hadoop上的FileNotFoundException

袁俊弼
2023-03-14

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

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

13/01/27 18:44:21 INFO mapred.JobClient: Task Id : attempt_201301271841_0001_m_000001_2, Status : FAILED
java.io.FileNotFoundException: File does not exist: /app/hadoop/jobs/nw_single_pred_in/predict
    at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.openInfo(DFSClient.java:1843)
    at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.(DFSClient.java:1834)
    at org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:578)
    at org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:154)
    at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:427)
    at org.apache.hadoop.mapreduce.lib.input.LineRecordReader.initialize(LineRecordReader.java:67)
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:522)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:763)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)


    // inside main, surrounded by try catch block, yet no exception thrown here
        Configuration conf = new Configuration();
        // rest of the stuff that relates to conf
        Path knowledgefilepath = 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);
        // rest of job settings 
        job.waitForCompletion(true); // kick off load


    try {
    System.out.println("Inside try !!");
    Path files[]= DistributedCache.getLocalCacheFiles(context.getConfiguration());
    Path cfile = new Path(files[0].toString()); // only one file
    System.out.println("File path : "+cfile.toString());
    CSVReader reader = new CSVReader(new FileReader(cfile.toString()),'\t');
    while ((nline=reader.readNext())!=null)
    data.put(nline[0],Double.parseDouble(nline[1])); // load into a hashmap
    }
    catch (Exception e)
    {// handle exception }

感谢帮助。

干杯!

共有1个答案

淳于玺
2023-03-14

重新安装hadoop并使用相同的jar运行该作业后,问题就消失了。似乎是一个bug而不是编程错误。

 类似资料:
  • 问题内容: 我正在使用Hadoop进行一个项目,它似乎是在本机中合并Java并提供对Python的流支持。选择其中一项会对性能产生重大影响吗?我已经足够早了,如果一种方法或另一种方法存在显着的性能差异,那么我可以选择任何一种方法。 问题答案: Java的动态性不如Python,并且在其VM中投入了更多精力,使其成为一种更快的语言。Python还因其全局解释器锁而受阻,这意味着它无法将单个进程的线程

  • 本文向大家介绍Hadoop上Data Locality的详解,包括了Hadoop上Data Locality的详解的使用技巧和注意事项,需要的朋友参考一下 Hadoop上Data Locality的详解 Hadoop上的Data Locality是指数据与Mapper任务运行时数据的距离接近程度(Data Locality in Hadoop refers to the“proximity” of

  • 这是我的java hadoop wordcount示例,它给出了以下错误: 线程“main”java.lang.noClassDeffounderRror:org/apache/avro/io/DatumReader在java.lang.class.forName0(本机方法)在java.lang.class.forName(class.java:348)在org.apache.hadoop.io

  • Ceph 文件系统可作为 Hadoop 文件系统( HDFS )的落地式替代品,本章描述了 Ceph 用于 Hadoop 存储的安装和配置过程。 依赖关系 CephFS 的 Java 接口 Hadoop 的 CephFS 插件 Important 当前要求 Hadoop 1.1.x 稳定版系列。 安装 在 CephFS 上使用 Hadoop 有三个必要条件。首先,必须有一个运行的 Ceph 。建设

  • 问题内容: 在遵循一些在线教程之后,我试图在Hadoop中运行WordCount示例。但是,我不清楚,因为执行以下命令时文件将从本地文件系统复制到HDFS。 当我执行以下命令时,我在HDFS上看不到我的python-tutorial.pdf。 这让我感到困惑。我已经在core-site.xml中指定了“ myhadoop-tmp”目录。我以为该目录将成为用于存储所有输入文件的HDFS目录。 如果不