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

実際の結果はこちら。

f:id:kotaroito2002:20170913084900p:plain

感想

小一時間あればできちゃうので、便利な時代になりました。 BigQueryであれば、Googleの他のプロダクト(例: Google DataStudio)と連携できるので、選択肢の1つとして常にアタマに入れておきたい。