EmbulkとBigQueryと
遅ればせながら触ってみたので、自分用にメモを残しておきたいと思います。
Embulk
よく使うコマンド
embulk guess seed.yml -o config.yml embulk preview config.yml embulk run config.yml
bundle環境を利用する場合は -b オプションをつける。
embulk guess -b embulk_bundle seed.yml -o config.yml embulk preview -b embulk_bundle config.yml embulk run -b embulk_bundle config.yml
プラグイン
Embulkはpluginアーキテクチャを採用しており、gem をインストールする形になる。
embulk gem install embulk-plugin-foo_bar
Gemfileを使って、bundle 環境をつくることもできる。
embulk mkbundle embulk_bundle cd embulk_bundle; vim Gemfile embulk bundle # update gem
BigQuery
サインアップ
初めてGoogle Cloud Platform(GCP)とBigQueryを使う時(というかクラウドコンピューティング全般に言えますが…)は、料金的な意味でドキドキしますが、2017年9月現在 $300のクレジットがあるので安心です。
よくある質問 | 無料試用 | Google Cloud Platform
Modify a project's billing settings - Cloud Platform Console Help
クイックスタート
アカウントのサインアップが終わったら、クイックスタートをやると雰囲気掴める。
Quickstart Using the Web UI | BigQuery | Google Cloud Platform
Embulk + BigQuery
クイックスタートだけでは自分でやった感がないので、EmbulkでMySQLに存在するデータをBigQueryにロードしてみます。 データは http://dev.mysql.com/doc/index-other.html の “world database” を使います。
Gemfile
source 'https://rubygems.org/' gem 'embulk', '~> 0.8.0' # Input gem 'embulk-input-mysql' # Output gem 'embulk-output-bigquery'
config.yml
in: type: mysql host: localhost user: root password: '' database: world table: city select: '*' order_by: ID out: type: bigquery mode: append auth_method: json_key json_keyfile: /path/to/json_keyfile.json auto_create_table: true project: your-project-id-1234 dataset: world table: city compression: GZIP source_format: NEWLINE_DELIMITED_JSON default_timezone: "Asia/Tokyo"
gemをインストールし、config.ymlを用意したら、あとは run するだけです。
embulk run -b embulk_bundle config.yml
実際の結果はこちら。
感想
小一時間あればできちゃうので、便利な時代になりました。 BigQueryであれば、Googleの他のプロダクト(例: Google DataStudio)と連携できるので、選択肢の1つとして常にアタマに入れておきたい。