2016-08-17 14 views
-2

私は8つの.tsvファイルを含むアーカイブ_2016_08_17.zipを持っています。私はhit_data.tsvという名前のファイルを抽出し、それをbigqueryにアップロードする必要があります。ファイルはGoogle Cloud Platformのバケットにあります。アーカイブの解凍を行わずにjavaのアーカイブから.tsvファイルを取得

アーカイブを開き、正しいファイルを見つけてその行を画面に印刷する簡単なプログラムを誰かに教えてもらえますか?私はそこからそれを取ることができます。私の考えはgs://path_name/*hit_data.tsvのパスをhit_data.tsvのデータを含むバッファに置き換えることです。

public static void main(String[] args) { 
    Pipeline p = DataflowUtils.createFromArgs(args); 

    p 
      .apply(TextIO.Read.from("gs://path_name/*hit_data.tsv")) 
      \\.apply(Sample.<String>any(10)) 
      .apply(ParDo.named("ExtractRows").of(new ExtractRows('\t', "InformationDateID"))) 
      .apply(BigQueryIO.Write 
        .named("BQWrite") 
        .to(BigQuery.getTableReference("ddm_now_apps", true)) 
        .withSchema(getSchema()) 
        .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND) 
        .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)); 

    p.run(); 
} 

答えて

0

定義上、解凍せずにファイルをzipアーカイブから読み取ることはできません。

+0

多分、私は必要以上にハードドライブにアクセスしたくありません。解凍したファイルをハードドライブに保存せずに確実にファイルにアクセスできます。 –

+0

確かに、それはあなたが尋ねたものではありません - あなたの質問を明確にするために更新する必要があります – GreyBeardedGeek

+0

私はそれが最も理にかなった方法でそれを求めようとしました。私はあなたが私の言いたいことを知っていると思います。 –

0

私たちはZipFileクラスを持っています。エントリの列挙を返すメソッドは​​です。ここで、ファイル名とパスを知っていれば、getEntryというエントリが見つかります。

最後に、getInputStreamメソッドを使用して、必要なエントリのみを読み取ることができます。

関連する問題