2016-11-07 7 views
0

各行がテキストファイル(gs:// ...)と行番号を表すBigQueryテーブルがあります。PCollectionからファイル名を抽出して効率的に解析する

file, line, meta 
file1.txt, 10, meta1 
file2.txt, 12, meta2 
file1.txt, 198, meta3 

各ファイルは約1.5Gbで、マイバケットには約1k個のファイルがあります。私の目標は、BQテーブルで指定された行を抽出することです。

私は、次の計画を実施することを決定した:

  1. 地図table =>KV<file,line>
  2. KV<file,line> =>KV<file, [lines]>
  3. 地図KV<file, [lines]> =>[KV<file, rowData>]rowDataは、実際のデータを意味

を削減一部でfileから行はlinesです。

私がdocsなどをよく読んだ場合、そのような条件ではTextIO.Readは使用されません。回避策として、GcsIoChannelFactoryを使用してGCSからファイルを読み取ることができます。それが正しいか?それは記述されたタスクのための好ましいアプローチですか?

答えて

0

はい、あなたのアプローチは正しいです。現在のところ、GcsIoChannelFactoryを使用している場合(またはFileBasedSourceというカスタムを記述している場合を除き、テキストファイルの行番号を持つ行を読み取る方法はありませんが、これはより複雑で、ファイル名がわからないあらかじめ)。

Splittable DoFn - この作業は進行中ですが、大量の作業であり、タイムラインはまだありません。

関連する問題