Help us understand the problem. What is going on with this article?

mysqlで集計頑張るのやめてbigqueryにいかない?

More than 3 years have passed since last update.

今回はmysqlのデータをbigqueryに流し込む方法

実行環境

CentOS6.5

今回使用するもの

今回はembulkを使用
TreasureDataの@frsyukiさんが作成されたデータ転送するツールで
inとoutを定義することでinputをcsvやmysqlにしたりoutputをredshiftやbigquery,Treasuredataにしたりできる。
めっちゃ便利!!

事前準備

テーブルのスキーマをjsonで定義する必要がある。
今回は下記のスキーマをもったデータベースがあるとする

項目名
id integer
name varchar(255)
age integer

流すまで

embulkのインストール

作者のページ見るのが一番

スキーマのjsonを定義する

今のカラムからtypeは何を指定したら良いかはこちらを参照

schema.json
[
  {
    "name": "id",
    "type": "INTEGER"
  },
  {
    "name": "name",
    "type": "STRING"
  },
  {
    "name": "age",
    "type": "INTEGER"
  }
]

embulk実行用のyamlをかく

完成系から

yaml
in:
  type: mysql
  user: [databaseのユーザー名]
  password: [databaseへのパスワード]
  database: [database名]
  table: [対象テーブル]
  host: [host名]
  select: "*"
out:
  type: bigquery
  auth_method: private_key
  service_account_email: *****@*****.iam.gserviceaccount.com
  p12_keyfile_path: ./*****.p12
  path_prefix: /tmp
  file_ext: .csv.gz
  source_format: CSV
  project: **********
  dataset: *********
  # 完了後にローカルファイルを削除
  delete_from_local_when_job_end: 1
  # bigquery側でのテーブル名
  table: *******
  # テーブルがない場合に自動で作成するか
  auto_create_table: 1
  # 先ほど作成したスキーマファイルのパス
  schema_path: ./schema.json
  formatter:
    type: csv
    header_line: false
    timezone: Asia/Tokyo
  encoders:
  - {type: gzip}

RUN!!!!

console
embulk run ***.yml

yamlの解説

inに関しては問題ないと思う
だいたい分かると思う。
問題はoutのbigquery側の設定
ややこしかったものをピックアップした

service_account_email

公式ページには

Your Google service account email

こう書かれているので、****@gmail.comって書いたら怒られた。
どうやら権限ページのサービスアカウントで作成した際のメールアドレスである必要があるらしい。

project

公式ページには

project_id

ダッシュボード画面でのプロジェクトのID

dataset

bigqueryのページで作成するデータベースのようなもののID

後の細かな設定は公式ページで

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした