2016-08-06 3 views
1

Googleのストレージに複数のテキストファイルで構成されたgzipファイルの圧縮ファイルがあります。私は各サブファイルにアクセスし、正規表現のようないくつかの操作を行う必要があります。 私はこのように私のローカルコンピュータで同じことをすることができます。Google Cloud DataflowのCompressedSourceのすべてのエントリにアクセスするにはどうすればよいですか?そして、各サブファイルのByte []を取得します。

pubic static void untarFile(String filepath) throw IOException { 
    try { 
    FileInputStream fin = new FileInputStream(filepath); 
    BufferedInputStream in = new BufferedInputStream(fin); 
    GzipCompressorInputStream gzIn = new GzipCompressorInputStream(in); 
    TarArchiveInputStream tarInput = new TarArchiveInputStream(gzIn); 
    TarArchiveEntry entry = null; 
    while ((entry = (TarArchiveEntry) tarInput.getNextTarEntry()) != null) { 
    byte[] fileContent = new byte (int)entry.getSize() ]; 
    tarInput.read(fileContent, 0, fileContent.length); 
    } 
    } 
} 

したがって、私はfileContentに対してバイト[]である他の操作を行うことができます。だから私はCompressedSource Googleの雲のデータフローとそのtest codeを参照してください。私は唯一のファイルからすべてのバイトby []サブファイルの、私はグーグルでこれを行うための任意のソリューションがあるのだろうかと思いますクラウドデータフロー。

答えて

1

TextIOはこれを直接サポートしていませんが、これを行うにはFileBasedSourceという新しいサブクラスを作成することができます。 isSplittable()をオーバーライドして常にfalseを返し、readNextRecord()にファイル全体を読み込ませたい場合があります。

関連する問題