Embulkとは
ファイルやデータベースからデータを吸い出し、別のストレージやデータベースにロードするためのコンパクトなツールです。
- プラグインアーキテクチャ
- 高速な並列・分散処理
- 設定ファイルの推測と提案
- リトライとリジューム
- オープンソース
Embulkを使う手順
環境構築
EmbulkはJavaの環境が必要となりますので、もしJavaの環境が整っていないかたはJavaのインストールが必要となります。
- Javaをインストール
- Embulkをインストール
使い方
- 必要となるプラグインをインストール
- seed.ymlを作成
- guessコマンドで設定ファイル(config.yml)を生成
- config.ymlを編集
- previewコマンドで確認
- runコマンドで実行
環境構築
Javaのインストール
1 | $ sudo yum install java-1.8.0-openjdk |
embulkのインストール
1 2 3 4 | $ 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 |
1 2 3 | if [ -f ~/.bashrc ]; then . ~/.bashrc fi |
使い方
Embulkの基本的な使い方としてはプラグインアーキテクチャなので、用途に応じたプラグインをインストールして使っていくことになります。
インプットとアウトプットについて記載した最低限の設定ファイル(seed.yml)を作成して、
guessコマンドによってそのseed.ymlからスキーマを推定し、実行に使う設定ファイルを生成します。
プラグイン
プラグインに関してはQiitaの記事によくまとまっておりますのでリンクを張っておきます。
Embulk(エンバルク)プラグインのまとめ
プラグインのインストール
1 | $ embulk gem install プラグイン名 |
サンプル
Embulkにはexampleというコマンドがあり、サンプル的に流れを確認できるものがあるので、
それを使って今回は説明していきます。
まずはemapleコマンドで環境をつくります。
1 | $ embulk example ./try1 |
コマンドを実行するとtry1のディレクトリができその中には
csvディレクトリとseed.ymlが生成されます。
csvディレクトリにはインプットデータのもととなるsample_01.csv.gzが格納されています。
seed.ymlはこのようになっています。
実際にはここを最初に自分で作っていく必要があります。
1 2 3 4 5 | in: type: file path_prefix: './try1/csv/sample_' out: type: stdout |
次にguessコマンドで設定ファイルを作成します。
1 | $ embulk guess ./try1/seed.yml -o ./try1/config.yml |
config.ymlの中身は下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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コマンドを使用して、意図通りのデータが出てくるかどうかを事前に確認することができます。
1 | $ embulk preview config.yml |
そこで問題がないようであれば、実行します。
1 | $ embulk run config.yml |
これで、基本的なembulkの使い方は以上になります。
MySQLやOracleなど他の例については追々、あげていきたいと思います。
コメント