■embulkとは
ざっくり言うとデータを取り込んでデータ加工し、そのデータ出力を出力するツール
それぞれ取り込み、データ加工、データ出力がプラグインで拡張できるようになっている
例えばCSVファイルを読み込んで、読み込んだデータの日付フォーマットを変換しDBに入れるというようなことができるツール
それぞれ現在利用できるプラグインは以下から確認できる
http://www.embulk.org/plugins/
またプラグインを自分で作成することも可能で
言語はjava または ruby
■環境等
OS : windows7embulk : 0.7.4
■使い方
・ダウンロードhttp://dl.embulk.org/embulk-latest.jar
ダウンロードした jar を embulk.bat にリネーム
embulk.batにパスを通す
■exampleを試す
クイックスタート(https://github.com/embulk/embulk#quick-start)にあるexampleを試してみるexampleコマンド
exampleコマンドでお試し用のファイルができるX:\embulk>embulk example .\try1
2015-XX-XX XX:XX:XX.000 +0900: Embulk v0.7.4
Creating .\try1 directory...
Creating .\try1/
Creating .\try1/csv/
Creating .\try1/csv/sample_01.csv.gz
Creating .\try1/example.yml
Run following subcommands to try embulk:
1. embulk guess .\try1/example.yml -o config.yml
2. embulk preview config.yml
3. embulk run config.yml
Run following ...に次に何をすればいいのかが書いてあるので試してみる
guessコマンド
guessコマンドはデータを読み込んで推測してくれる機能exampleコマンドで出来たtry1\example.ymlは以下のようになっている
in:
type: file
path_prefix: "X:/embulk/try1/csv/sample_"
out:
type: stdout
inは入力で頭に X:/embulk/try1/csv/sample_ が付くファイルを読み込む
この場合の対象はexampleコマンドで出来た try1\csv\sample_01.csv.gz になる
outは出力で標準出力
この try1\csv\sample_01.csv.gz を読み込んで推測してくれるらしい
このようにymlファイルにin out や フィルターなど様々な条件を指定してデータを加工する
guessコマンドは以下で -o に推測結果を書き込むymlを指定する
embulk guess .\try1\example.yml -o config.yml
X:\embulk>embulk guess .\try1\example.yml -o config.yml
2015-XX-XX 00:00:00.000 +0900: Embulk v0.7.4
2015-XX-XX 00:00:00.000 +0900 [INFO] (guess): Listing local files at directory 'X:\embulk\try1\csv' filtering filename by prefix 'sample_'
2015-XX-XX 00:00:00.000 +0900 [INFO] (guess): Loading files [X:\embulk\try1\csv\sample_01.csv.gz]
2015-XX-XX 00:00:00.000 +0900 [INFO] (guess): Loaded plugin embulk/guess/gzip from a load path
2015-XX-XX 00:00:00.000 +0900 [INFO] (guess): Loaded plugin embulk/guess/csv from a load path
in:
type: file
path_prefix: X:/embulk/try1/csv/sample_
decoders:
- {type: gzip}
parser:
charset: UTF-8
newline: CRLF
type: csv
delimiter: ','
quote: '"'
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}
Created 'config.yml' file.
previewコマンド
previewコマンドは実際にoutへの書き込みを行わずに試してみるためのコマンド使い方は以下
embulk preview config.yml
X:\embulk>embulk preview config.yml
2015-09-13 11:54:45.499 +0900: Embulk v0.7.4
2015-09-13 11:54:46.724 +0900 [INFO] (preview): Listing local files at directory 'X:\embulk\\try1\csv' filtering filename by prefix 'sample_'
2015-09-13 11:54:46.724 +0900 [INFO] (preview): Loading files [X:\embulk\\try1\csv\sample_01.csv.gz]
+---------+--------------+-------------------------+-------------------------+----------------------------+
| id:long | account:long | time:timestamp | purchase:timestamp | comment:string |
+---------+--------------+-------------------------+-------------------------+----------------------------+
| 1 | 32,864 | 2015-01-27 19:23:49 UTC | 2015-01-27 00:00:00 UTC | embulk |
| 2 | 14,824 | 2015-01-27 19:01:23 UTC | 2015-01-27 00:00:00 UTC | embulk jruby |
| 3 | 27,559 | 2015-01-28 02:20:02 UTC | 2015-01-28 00:00:00 UTC | Embulk "csv" parser plugin |
| 4 | 11,270 | 2015-01-29 11:54:36 UTC | 2015-01-29 00:00:00 UTC | NULL |
+---------+--------------+-------------------------+-------------------------+----------------------------+
runコマンド
実際のデータ変換を行うコマンド
出力先が標準出力になっているのでコンソールに表示される
コマンドは以下
embulk run config.yml
色が変わっている部分が出力結果
このように加工される
X:\embulk\>embulk run config.yml
2015-XX-XX 00:00:00.000 +0900: Embulk v0.7.4
2015-XX-XX 00:00:00.000 +0900 [INFO] (transaction): Listing local files at directory 'X:\embulk\\try1\csv' filtering filename by prefix 'sample_'
2015-XX-XX 00:00:00.000 +0900 [INFO] (transaction): Loading files [X:\embulk\\try1\csv\sample_01.csv.gz]
2015-XX-XX 00:00:00.000 +0900 [INFO] (transaction): {done: 0 / 1, running: 0}
1,32864,2015-01-27 19:23:49,20150127,embulk
2,14824,2015-01-27 19:01:23,20150127,embulk jruby
3,27559,2015-01-28 02:20:02,20150128,Embulk "csv" parser plugin
4,11270,2015-01-29 11:54:36,20150129,NULL
2015-XX-XX 00:00:00.000 +0900 [INFO] (transaction): {done: 1 / 1, running: 0}
2015-XX-XX 00:00:00.000 +0900 [INFO] (main): Committed.
2015-XX-XX 00:00:00.000 +0900 [INFO] (main): Next config diff: {"in":{"last_path":"E:\\share\\work\\data\\embulk\\try1\\csv\\sample_01.csv.gz"},"out":{}}
次はプラグインの作成について書くつもり
0 件のコメント:
コメントを投稿