Plugins

About

Input Plugins

一覧: https://plugins.embulk.org/#input

MySQL

https://github.com/embulk/embulk-input-jdbc/tree/master/embulk-input-mysql

公式プラグイン。

Config(一部):

keydescription
selectSELECT句に渡すカラムリストをカンマ区切り文字列で渡す。デフォルトは *
optionsJDBCに渡す追加オプション。詳細は後掲
column_optionsSee below

HINTS:

  • 特定のカラムを対象から外したいときは select で指定すればよい。 column_options にはそういうオプションはなさそう

options

JDBCに渡す追加オプション。

keydefaultdescription
tinyInt1isBittrueデフォルトだと TINYINT(1) はBOOL値とみなされるが、falseにするとちゃんとMySQLに入っているバイト値を読んでくれる

参考:

column_options

MySQLの各カラムに対する変換方法を指定することができる。

keyvaluedescription
type例: string, boolean, timestampembulk内で処理するときにこの型として扱われる。デフォルトは自動変換。自動変換で都合が悪いときは指定が必要になる
timestamp_format例: %Y-%m-%d %H:%M:%SMySQLでDATE, TIME, DATETIME型で、かつ、embulk内で string 型として処理される場合にこの書式が使われる
timezone例: "+0900"MySQLでDATE, TIME, DATETIME型で、かつ、embulk内で string 型として処理される場合に有効になり、このタイムゾーンの値としてフォーマットされる

Output Plugins

一覧: https://plugins.embulk.org/#output

BigQuery

https://github.com/embulk/embulk-output-bigquery

Configuration(一部):

PropertyTyperequired?DefaultDescription
modestringoptional“append”追記、入れ替えなどいくつかのモードがある
projectstring基本的にYGCP PROJECT_ID
datasetstringYBQ dataset
tablestringYBQ table
schema_filestringoptionalpath/to/schema.json
source_formatstringY“CSV”他には “NEWLINE_DELIMITED_JSON”
compressionstringoptional“NONE”ローカルファイルを圧縮するかどうか(“GZIP” or “NONE”)

参考:

Formatterの性能問題

https://github.com/embulk/embulk-output-bigquery#formatter-performance-issue に書かれている問題。

レコードをCSVやJSONにフォーマットする機能があるが、組み込みのプラグインはJRubyで書かれていて、Javaのものより遅いので、Javaで書かれたFilterプラグインを使うといいとのこと。

例:

BQの4GB制限への対応

2015年4月からイシューが積まれている https://github.com/embulk/embulk-output-bigquery/issues/6

ワークアラウンド:

  • Local Executorのオプションによってファイル分割数を上げる
  • 非圧縮オプションを使う。これで5TBまで行ける

参考:

OutputPlugin ‘bigquery’ is not found

たまに起こるエラー。連続でジョブを動かしていると起こりやすいような気がする。
GitHubでembulk本体にイシューが上がっている:

ワークアラウンド:

  • イシューの下の方にあるように、 GEM_HOME 環境変数の設定と gem jruby-openssl のインストールで回避できる
  • リトライで成功することもあるけど、↑の方が確実

中の人によれば、近々bigquery pluginはJavaに書き換えられるとか。

File Formatter Plugins

一覧(コアにないもの): https://plugins.embulk.org/#file-formatter

CSV

https://www.embulk.org/docs/built-in.html#csv-formatter-plugin

built-in plugin.

Options(一部)

nametypedefaultdesription
newline_in_fieldenumLF改行を含む値の中の改行コード

Executor Plugins

一覧(コアにないもの): https://plugins.embulk.org/#executor

Local

https://www.embulk.org/docs/built-in.html#local-executor-plugin

ローカルのスレッドを使ってタスクを実行する。唯一のビルトインExecutor Plugin.

Options:

nametypedefaultdescription
max_threadsinteger2x CPUコア数最大並行スレッド数
min_output_tasksinteger1x CPUコア数ページ分割を伴う最小の出力タスク数

Example:

exec:
  max_threads: 8         # run at most 8 tasks concurrently
  min_output_tasks: 1    # disable page scattering
in:
  type: ...
  ...
out:
  type: ...
  ...