GCSにcsv(gzip圧縮)ファイルがあります。私はこれらのファイルを読んで、BigQueryにデータを送信したいと思います。Google Cloud Dataflow(Apache Beam) - ヘッダー付きのgzip形式のcsvファイルの処理方法
ヘッダー情報は変更できます(ただし、すべての列は事前にわかっています)。ヘッダーを削除するだけでは不十分です。最初の行を読み込み、残りの行に列情報を追加する必要があります。
どうすれば可能ですか?
まず、この記事のようなカスタムソースを実装する必要があると思います。
Reading CSV header with Dataflow
しかし、このソリューションでは、まずGzipをどのように圧縮解除できるかわかりません。どういうわけかをTextIO
のように使用できますか? (私はパラメータcompression_type
in a python Classを見つけましたが、私は、Javaを使用していますし、Java FileBasedSource
クラスに似たものを見つけることができませんでした。)
それはファイルが分割不可能になるので、私の場合には、それはありますが、また、私は(これにビットoverkillingを感じますはい)。
GoogleCloudStorageを使用して、ファイルとその最初の行を私のmain()
ファンクションの最初の場所で直接読み取ってから、パイプラインに進むことができます。
データフローのヘッダーを利用している間にCSVファイルを読み取るためのベストプラクティス(データフロー方法)があるかどうかを確認したいのですが?
TextIO変換をサブクラス化して特殊な動作を追加するのはかなり簡単です。 – Pablo
@Pabloには、TextIOを拡張して特殊な動作を追加するために参照できる例がありますか?私はファイル処理の振る舞いを拡張するために 'Source'を使う必要があると思っていましたが、それを行う方法はわかっていましたが、' TextIO'のgzファイルの自動圧縮解除の利点を失いました。 –