私たちは〜10GBのzip圧縮された〜30GBの圧縮されたgzipファイルを処理するsomバッチジョブを持っています。データフローでlargz gzippedファイルを効果的に処理するにはどうすればよいですか?
これを処理しようとすると、Javaで不当な時間がかかり、より効果的な方法を探しています。 TextIO
またはgcsのネイティブjava sdkを使用してファイルをダウンロードすると、処理に8時間以上かかるため、何らかの理由でutをスケールアウトすることができます。おそらく、gzipされているのでファイルを分割しません。
ファイルを解凍して解凍したファイルを処理すると、ジョブは約10分かかるため、100倍の速さで処理されます。
gzippedファイルを処理するには余分な時間がかかることがありますが、100倍は長すぎます。
負荷が分割可能でないので、私が持っていた作業員の数はそれほど重要ではないと思います。私は30人の労働者で仕事を始めようとしましたが、分割できないので自動的にそれを縮小します。 –
'TextIO'を処理する前に一時フォルダに解凍して書き込むことが可能になりますので、負荷を並列化できます。これは現時点で私たちがやっていることです。 –
TextIOを最初に圧縮解除してGCSに書き込むことは、同様に遅くなり、パフォーマンスが向上しません。同じファイルが複数のパイプラインで読み取られている場合を除いて、圧縮解除のコストは両者で償却することができます。 –