Embulkとは
ファイルやデータベースからデータを吸い出し、別のストレージやデータベースにロードするためのコンパクトなツールです。
- プラグインアーキテクチャ
- 高速な並列・分散処理
- 設定ファイルの推測と提案
- リトライとリジューム
- オープンソース
Embulkを使う手順
環境構築
EmbulkはJavaの環境が必要となりますので、もしJavaの環境が整っていないかたはJavaのインストールが必要となります。
- Javaをインストール
- Embulkをインストール
使い方
- 必要となるプラグインをインストール
- seed.ymlを作成
- guessコマンドで設定ファイル(config.yml)を生成
- config.ymlを編集
- previewコマンドで確認
- runコマンドで実行
環境構築
Javaのインストール
$ sudo yum install java-1.8.0-openjdk
embulkのインストール
$ curl --create-dirs -o ~/.embulk/bin/embulk -L "http://dl.embulk.org/embulk-latest.jar" $ chmod +x ~/.embulk/bin/embulk $ export PATH="$HOME/.embulk/bin:$PATH" $ source ~/.bashrc
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
使い方
Embulkの基本的な使い方としてはプラグインアーキテクチャなので、用途に応じたプラグインをインストールして使っていくことになります。
インプットとアウトプットについて記載した最低限の設定ファイル(seed.yml)を作成して、
guessコマンドによってそのseed.ymlからスキーマを推定し、実行に使う設定ファイルを生成します。
プラグイン
プラグインに関してはQiitaの記事によくまとまっておりますのでリンクを張っておきます。
Embulk(エンバルク)プラグインのまとめ
プラグインのインストール
$ embulk gem install プラグイン名
サンプル
Embulkにはexampleというコマンドがあり、サンプル的に流れを確認できるものがあるので、
それを使って今回は説明していきます。
まずはemapleコマンドで環境をつくります。
$ embulk example ./try1
コマンドを実行するとtry1のディレクトリができその中には
csvディレクトリとseed.ymlが生成されます。
csvディレクトリにはインプットデータのもととなるsample_01.csv.gzが格納されています。
seed.ymlはこのようになっています。
実際にはここを最初に自分で作っていく必要があります。
in: type: file path_prefix: './try1/csv/sample_' out: type: stdout
次にguessコマンドで設定ファイルを作成します。
$ embulk guess ./try1/seed.yml -o ./try1/config.yml
config.ymlの中身は下の通りです。
in: type: file path_prefix: ./try1/csv/sample_ decoders: - {type: gzip} parser: charset: UTF-8 newline: LF type: csv delimiter: ',' quote: '"' escape: '"' null_string: 'NULL' trim_if_not_quoted: false skip_header_lines: 1 allow_extra_columns: false allow_optional_columns: false columns: - {name: id, type: long} - {name: account, type: long} - {name: time, type: timestamp, format: '%Y-%m-%d %H:%M:%S'} - {name: purchase, type: timestamp, format: '%Y%m%d'} - {name: comment, type: string} out: {type: stdout}
guessコマンドによってファイルの中身からカラムなどの情報を推定して設定ファイルを作成してくれることがわかるかと思います。
注意するべき点としては、時間のカラムについてはtimestampになるので、
用途に応じて、自分でtypeを変更する必要があります。
次に、previewコマンドを使用して、意図通りのデータが出てくるかどうかを事前に確認することができます。
$ embulk preview config.yml
そこで問題がないようであれば、実行します。
$ embulk run config.yml
これで、基本的なembulkの使い方は以上になります。
MySQLやOracleなど他の例については追々、あげていきたいと思います。