2012-02-07 3 views
0

私は多くを検索しましたが、この問題の解決策を見つけることができませんでした。 実際にアクセスしたいファイルはHDFSにありますが、入力パス(map/reduceジョブに入力されたパス)にはありません。そして私はマッパーからそれにアクセスしたい。 入力パスで指定されたhdfsパスはマッパーから完全にアクセスできますが、他のhdfsファイルは完全にアクセスできません。マッパー内部マッパーHadoopからHDFSファイルを開くことができません

: - 次のエラーが発生

FileSystem FS1=FileSystem.get(conf); 
Path path=new Path(""+FS1.getHomeDirectory()); 
FSDataInputStream fsdis=FS1.open(path); 

結果: にjava.io.IOException:事前に開いたファイル名/ユーザー/ Hadoopをすることはできません

おかげで、 過酷な

+0

はあなたがチェックした ? –

+0

はい、3つすべての読み取りアクセス権があります。 – Harsh

+2

'/ user/hadoop'はディレクトリでなければならないので、' FileSystem.open() 'はファイルであるかのように機能しません。 –

答えて

1

I似たようなことをするにはthis tutorialを覚えておいてください。あなたはそれを試みることができますが、それはあなたが書いたことのほんの少し違いを持っ​​ていますが、それでも助けてくれるかもしれません...

@編集:ああ、私は(コメントを読んだ後に) FS1.getHomeDirectory()を開き、それがディレクトリです。 ファイルではなく、ディレクトリであることを指摘しておく必要があります(リンクされたチュートリアルの「ファイルからのデータの読み込み」を参照してください)。

0

uはこれを試すことができ、一度

try { 
    FileSystem fs = FileSystem.get (new Configuration()); 
    FileStatus[] status = fs.listStatus (new Path ("hdfs://jp.seka.com:9000/user/jeka/in")); 
    for (int i=0;i < status.length;i++) { 
     BufferedReader br = new BufferedReader (new InputStreamReader (fs.open (status[i].getPath()))); 
     String line; 
     line = br.readLine(); 
     while (line != null) { 
      System.out.println (line); 
      line=br.readLine(); 
     } 
    } 
} catch (Exception e) { 
     System.out.println("File not found"); 
} 
/ユーザー/ Hadoopの権限を読み取った場合
関連する問題