2013-06-26 54 views
1

我已经创建了jar,它运行mapReduce并在某个目录下生成输出。 我需要从我的java代码中的输出目录中读取输出数据中的数据,这些数据不是在hadooop环境中运行的,也不需要将其复制到本地目录中。 我正在使用ProcessBuilder来运行Jar.can任何一个帮助我.. ??如何从hadoop获取输出数据?

回答

1

您可以编写以下代码来读取MR驱动程序代码中作业的输出。

job.waitForCompletion(true); 
    FileSystem fs = FileSystem.get(conf); 
    Path[] outputFiles = FileUtil.stat2Paths(fs.listStatus(output,new OutputFilesFilter())); 

     for (Path file : outputFiles) { 
      InputStream is = fs.open(file); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
      --- 
      --- 
     } 
1

使用HDFS API读取HDFS数据时出现什么问题?

public static void main(String[] args) throws IOException { 
     // TODO Auto-generated method stub 

     Configuration conf = new Configuration(); 
     conf.addResource(new Path("/hadoop/projects/hadoop-1.0.4/conf/core-site.xml")); 
     conf.addResource(new Path("/hadoop/projects/hadoop-1.0.4/conf/hdfs-site.xml")); 
     FileSystem fs = FileSystem.get(conf); 
     FSDataInputStream inputStream = fs.open(new Path("/mapout/input.txt")); 
     System.out.println(inputStream.readLine());  
    } 

您的程序可能已经用完了您的hadoop集群,但hadoop守护程序必须正在运行。

相关问题