Google Dataflowが、GAになりましたので、Google Dataflowを改めて。
cloudservice accountとか、Compute Engine Service Accountとか、新規プロジェクト作成時のみしか自動追加されない。既存プロジェクトに追加する方法が知りたいところ。Service Accountが登録されているなら、credentailsは不要のようだ。
- maven 3.3.9
- Java8 1.8.0_66
$git clone https://github.com/GoogleCloudPlatform/DataflowJavaSDK-examples.git
WordCountのサンプルを実行。実行過程で、VM インスタンスが起動します。
$ ../apache-maven-3.3.9/bin/mvn compile exec:java -Dexec.mainClass=com.google.cloud.dataflow.examples.WordCount -Dexec.args="--runner=BlockingDataflowPipelineRunner --project=<project name> --stagingLocation=gs://<GCS bucket>/staging/"
dataflowのコードテンプレートを生成は以下で行えます。
mvn archetype:generate \ -DarchetypeArtifactId=google-cloud-dataflow-java-archetypes-starter \ -DarchetypeGroupId=com.google.cloud.dataflo
Cloud Pub/Sub(PubSubIO)からデータを取得、処理を行い、BigQuery IO(BigQueryIO)でGoogle BigQueryに書き込むのもできてしまいます。
google dataflow は、現在のところ、preemptible VMに対応していません。preemptible VMはDataflowのようなジョブの使い方にはマッチすると思われるので今後のサポートに期待したい。
マシンタイプは、DataflowPipelineOptionsでディスクサイズ、Workerのサイズ、マシンタイプのカスタマイズは可能です。
オプションについては、https://cloud.google.com/dataflow/pipelines/specifying-exec-params
eclipse用のDataflow pluginも用意されているので、eclipse上からDataflowアプリケーションを実行させることも可能です。ローカル実行も。
https://cloud.google.com/dataflow/getting-started-eclipse?hl=ja