【问题标题】:referencing files from hadoop dfs in map reduce在 map reduce 中从 hadoop dfs 引用文件
【发布时间】:2012-10-17 03:32:26
【问题描述】:

对于我的 map reduce 作业,我正在读取输入文件中的行以获取外部文件路径。所以我用作输入的文件如下所示:

/user/local/myfiles/temp1.png

/user/local/myfiles/temp2.jpg

/user/local/myfiles/temp3.txt

/user/local/myfiles/temp4.txt

....

我想对这些文件执行一些操作。我需要从我在 map 函数中读取的字符串路径中获取文件对象。我的问题是:我将这些文件的实际副本放在哪里以便我可以获取它们?我把它们放在hadoop dfs上吗?当我把它们放在本地系统上时,我得到一个文件未找到错误,但是当我把它们放在 hadoop 文件系统上时,我得到了同样的错误(所以输入文件中的每一行都类似于“/user/hadoop/input/ temp1.txt")。我可以获取文件名,但我需要能够从输入文件中列出的路径中获取图像对象或文本文件对象。有没有什么方法可以通过我的 map 函数访问 dfs(或本地系统)上的文件,只要给出一个字符串路径?

【问题讨论】:

    标签: hadoop


    【解决方案1】:

    您需要将它们添加到 HDFS,以便所有映射器都可以访问它们。以下对我有用(0.20):

            FileSystem fs = FileSystem.get(context.getConfiguration());
            FSDataInputStream in = null;
            BufferedReader br = null;
            String line = null;
    
            String file = context.getConfiguration().get(Constants.INFILE); 
            in = fs.open(new Path(file));
            br = new BufferedReader(new InputStreamReader(in));
            while((line=br.readLine())!=null)
    

    我在驱动程序中添加了 Constants.INFILE,以免将文件名硬编码到代码中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2011-07-21
      • 2014-03-22
      相关资源
      最近更新 更多