2013-06-26 52 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守護程序必須正在運行。

相關問題