映射器类

时间:2015-12-03 17:56:31

标签: hadoop path hdfs

我在hdfs的主目录中有两个文件。这些是file1.txt和file2.txt。

我将file1.txt作为输入参数传递给mapreduce程序中的驱动程序类。它工作正常。但是,当我想在同一个映射器中阅读file2.txt时,我会收到file not found错误。

正确的编码方式是什么,以便程序能够识别file2.txt。我在Java编码。 我的pwd是home / 109045,这是我的两个文件。我看到$hadoop fs -ls时列出了它们。

我的文件1是claimdict.txt,file2是FNOLR1.txt

代码是:

public class CS1Mapper extends Mapper<LongWritable, Text, Text, IntWritable> {
@Override
 public void map(LongWritable key, Text value, Context context)
    throws IOException, InterruptedException {

  String clmid = null;
  int fnolcnt = 0;
  String line = value.toString();
  Scanner scan1 = new Scanner(line);
  scan1.useDelimiter(",");

  while (scan1.hasNext()) {
        scan1.next(); // term
        String syn = scan1.next(); // synonyms
        scan1.next(); // collision type

   try {
        fnolcnt = 0;
        clmid = null;

   //File file = new File("hdfs://10.32.6.88:8020/home/109045/" + "FNOLR1.txt");
/File file = new File("hdfs://localhost:8020/FNOLR1.txt");
    File file = new File("FNOLR1.txt");

     Scanner scan2 = new Scanner(file);

[109045 @ 01HW845977~] $ hadoop fs -ls FNOLR1.txt 找到1项 -rw-r - r-- 3 109045保证171 2015-12-02 18:31 FNOLR1.txt [109045 @ 01HW845977~] $

[109045 @ 01HW845977~] $ hadoop fs -ls claimdict.txt 找到1项 -rw-r - r-- 3 109045保证180 2015-12-02 18:23 claimdict.txt [109045 @ 01HW845977~] $

另外,如何确认本地主机的端口是什么?

1 个答案:

答案 0 :(得分:0)

可能是文件权限问题。你能分享hadoop fs -ls <directory_where_file1_and_file2_exists>的结果吗?