hadoop学習記録(二)HFS java api

2575 ワード

FSS DateinputStreamオブジェクト
FileSystemオブジェクトのopen()メソッドはFSS DateInputStreamオブジェクトを返し、クラスチェンジはjava.io.DateInout Streamインターフェースを継承しました。ランダムアクセスのサポート
Seekableコネクタ
ファイルに指定された位置を見つけて、ファイルの開始位置に対して現在位置のずれ量を問い合わせる方法を提供します。
public interface Seekable{
    //seek()               
    void seek(long pos);
    long getPos();
    boolean  seekToNewSource(long targetPos);
}
注意が必要なのは、seek()方法は相対的に高いオーバーヘッドの操作であり、慎重に使用する必要があるということです。ファイルにアクセスするなら、MapReduceのようなストリームデータを使って、大量のseek()ではありません。
 
データを書き込み
FIleSystemに新しいフォルダを作成する方法があります。
  • public Fredate OutputStream create(path f);この方法はpathオブジェクトを指定します。存在しない場合は自動的に作成します。フォルダが存在しないと失敗します。書き込みを作成したのではなく、先にexists()を呼び出して判断します。
  • 別の方法は、既存のファイルの末尾にデータを追加することを許可するapped()である。
  • progress()方法は、フィードバックインターフェースを転送するために使用され、アプリケーションデータのdatendeへの書き込みの進捗を通知することができる。
  •  1 String localSrc = args[0];
     2 String dst = args[1];
     3 //       
     4 InputStream in = new InputStream(new FileInputStream(localSrc));
     5 
     6 Configuration conf = new Configuration();
     7 FileSystem fs = FileSystem.get(URI.create(dst),conf);
     8 OutputStream out  = fs,create(new Path(dst),new Progressable(){
     9     public void progress(){
    10        Syso.("running!")
    11     }
    12 });
    FSS Data OutputStreamオブジェクト
    このオブジェクトはファイルを書き込む時に位置決めすることができず、順番に書き込むだけで、ファイルの末尾に追加できます。
     
    FileStatusオブジェクト
    FIleSystem.get FileStatus()の方法でファイルの情報とステータスを返すことができます。ファイル長、ブロックサイズ、コピー、変更時間、所有者および権限が含まれます。