2017-03-21 10 views
0

数百万行のアップロードされたxlsファイルからデータを取り出し、リレーショナルDBに入れてから後で別のxlsファイルを出力するように問い合わせることができます。 これはGoogle Cloud上で行う必要があるため、私はGoogle Cloud Dataflowの使用を検討していました。データフローは適切なツールですか?どこで私はそれに精通し、私は上記のことを行う方法を開始する必要がありますか?お勧めのプログラミング言語は何ですか?誰かがPythonの使用を勧めました。なぜなら、Javaよりも軽量だと思ったからです。シンプルなGoogle Cloud DataFlow ETL、xlsからdbへxls

また、データをDBに抽出して変換するプロセスを1日1回または2回行うことができ、xls出力を生成することが必要な回数だけ行われることを考慮して、コストについて知りたいと思います。 1日30回)

Tバンク!

答えて

1

これはデータフローで行うことができますが、xlsファイル形式の処理について何を提案するかはわかりません。それはバイナリ形式ですか?可能であれば、csvファイルとして保存する方が簡単かもしれません。

CSVテキストファイルの場合、一度にファイルの1行を処理するTextIOを使用できます。ファイルをGCSに保存し、パイプラインをセットアップしてTextIOで行ごとに読み取ります。次に、カスタムParDoを使用して各行を処理し、解析します。それをBigQueryIOに渡してテーブルに書き出します。

xlsファイルを使用する場合は、custom sourceを使用し、xlsファイルを解析するためにライブラリを呼び出す必要があります。

BigQueryにデータを保存したい場合があります。これにはBigQueryIOを使用できます。

Javaは一般的には少し速いですが、処理したいデータの量はあまり多くありません。だから、もしあなたがこれを好むなら、Pythonを使うと、このケースでは大きな違いはないと思います。

+0

スプレッドシートはリレーショナルテーブルのように見えるので、Google Cloud SQLの使用を実際に考えていました。あなたに質問してください:ファイルはデータフローによってのみ処理されるようにアップロードされますが、データがDBに入った後は不要になります。その場合、ストレージはまだ必要ですか?それ以外の選択肢はありますか? – CCC

+0

GCSに保存されているファイルは?はい、あなたがそれらを処理してDBに入れたら、あなたはそれらをもう必要とせず、あなたのDBと対話できます。 パイプラインの実行が正常に終了し、出力があることを確認したら、それらを削除することができます。いくつかの特別な理由でパイプラインを再実行したい場合、これらのファイルを保持しているユーザーもいます。 データフローで再度処理したい場合は、CloudSQLから読み込むパイプラインを実行する必要があります。しかし、今日のデータフローSDKでは、BigQueryからの読み込みをサポートしています。 BeamにはSQLIO用のJDBCIOソースがありますが、データフローはありません。 –

関連する問題