embulkのQuick Startをやってみた

データを変換する技術としてEmbulkがあります。
仕事柄似たようなシステムを開発していて、興味があったのでQuick Startをやってみました

事前準備

Javaを実行できる環境が必要です。
私の環境にはインストールされておらず、$ javaってタイプすると「“java”コマンドラインツールを使用するには、JDK をインストールする必要があります。」と言われます。
詳しい情報から、ORACLEのサイトに移動してJDKをダウンロード&インストールします

とりあえずよくわからないけど、Accept License Agreementにチェックを入れてこれをダウンロードします

インストール

早速、GitHubのREADMEにQuick Startがあるので触ってみました

curlでソースをダウンロードして、ホームディレクトリに.embulkとして設置します。

1
$ curl --create-dirs -o ~/.embulk/bin/embulk -L https://bintray.com/artifact/download/embulk/maven/embulk-0.4.10.jar

ダウンロードしたソースに実行権限を付与

1
$ chmod +x ~/.embulk/bin/embulk

パスを通す(私はzshなので、zshrc)

1
2
$ echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.zshrc
$ source ~/.zshrc

触ってみた

1
2
3
4
5
6
7
8
$ embulk example ./try1
$ tree try1
try1
├── csv
│   └── sample_01.csv.gz
└── example.yml
1 directory, 2 files

を実行してみると、./try1ディレクトリが出来ました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ embulk guess ./try1/example.yml -o config.yml
2015-02-28 16:35:24,891 +0900: Embulk v0.4.10
2015-02-28 16:35:26.213 +0900 [INFO] (guess): Listing local files at directory '/Users/nakano/.embulk/bin/try1/csv' filtering filename by prefix 'sample_'
2015-02-28 16:35:26.227 +0900 [INFO] (guess): Loading files [/Users/nakano/.embulk/bin/try1/csv/sample_01.csv.gz]
in:
type: file
path_prefix: /Users/nakano/.embulk/bin/try1/csv/sample_
decoders:
- {type: gzip}
parser:
charset: UTF-8
newline: CRLF
type: csv
delimiter: ','
quote: '"'
escape: ''
null_string: 'NULL'
header_line: true
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}
exec: {}
out: {type: stdout}
Created 'config.yml' file.
1
2
3
4
5
6
7
8
9
10
11
12
$ embulk preview config.yml
2015-02-28 16:37:36,415 +0900: Embulk v0.4.10
2015-02-28 16:37:37.141 +0900 [INFO] (preview): Listing local files at directory '/Users/nakano/.embulk/bin/try1/csv' filtering filename by prefix 'sample_'
2015-02-28 16:37:37.145 +0900 [INFO] (preview): Loading files [/Users/nakano/.embulk/bin/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 | |
+---------+--------------+-------------------------+-------------------------+----------------------------+

これは変換結果のプレビューみたいですね。

1
2
3
4
5
6
7
8
9
10
11
12
$ embulk run config.yml
2015-02-28 16:38:48,239 +0900: Embulk v0.4.10
2015-02-28 16:38:49.964 +0900 [INFO] (transaction): Listing local files at directory '/Users/nakano/.embulk/bin/try1/csv' filtering filename by prefix 'sample_'
2015-02-28 16:38:49.971 +0900 [INFO] (transaction): Loading files [/Users/nakano/.embulk/bin/try1/csv/sample_01.csv.gz]
2015-02-28 16:38:50.080 +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,
2015-02-28 16:38:50.151 +0900 [INFO] (transaction): {done: 1 / 1, running: 0}
2015-02-28 16:38:50.167 +0900 [INFO] (main): Committed.
2015-02-28 16:38:50.168 +0900 [INFO] (main): Next config diff: {"in":{"last_path":"/Users/nakano/.embulk/bin/try1/csv/sample_01.csv.gz"},"out":{}}

これで変換の実行ですかね。
できあがったファイルはどこにあるんだろう…( ˘⊖˘) 。oO
ちょっと最後もやもやっとしたところでタイムアップ

参考URL