オープンソースのバルクデータローダー「Embulk」登場。fluentdのバッチ版、トレジャーデータが支援

2015年1月28日

何ギガバイトもあるCSVをデータベースに読み込ませるようなバルクデータをバッチ処理するためのツール「Embulk」がオープンソースで公開されました。

コミッターとして開発しているのは、ログ収集ツールとして知られるfluentdなどの開発者として知られる古橋貞之氏、西澤無我氏、中村浩士氏らで、3人が所属するTreasure Dataも開発を支援しています。

古橋氏はEmbulkについて「簡単に言うとfluentdのバッチ版です」と説明。1月27日に行われた「データ転送ミドルウェア勉強会」で、Embulkの紹介を行いました。

Embulkはプラグインベースのバルクデータローダー

fig

古橋氏はまず、例えばCSVファイルをPostgreSQLに読み込ませようとすると、CSVの日付のフォーマットがPostgreSQLの想定しているフォーマットと違っていたり、Null値の表現が違っていたりして失敗して、データ変換のためのアドホックなスクリプトを何度も書くことになると、現状のバルクデータのロードが簡単でないことを紹介。

しかもこうした作業はXMLやJSONや各種ログフォーマットなどデータの種類が増えるごとに発生し、またロード先がPostgreSQLからMongoDBやAmazon RedShiftなど増えることでも同様に発生すると指摘。さらにデータの二重ロードやエラーの際のハンドリング、リトライ、大規模なロード時の性能最適化など、バルクロードのデータには数々の課題があることを示しました。

fig

こうした課題を解決するために開発されたのが「Embulk」です。

「Embulkはプラグインベースのバルクデータローダー。プラグインで、あたらしいデータフォーマットやデータソースに対応できるし、これをオープソースにすることで再利用できる」(古橋氏)

fig

Embulkのプラグインは階層構造になっており、インプット側は入力に対応する「FileInputPlugin」、gzipのデコードなどに対応する「DecoderPlugin」、そしてデータをパースする「ParserPlugin」の3層。そして実行部分も「Executor Plugin」になっており、例えばHadoopに対応したプラグインを書くと、MapReduce上で並列処理として実行できる、といった構造になっています。

fig

「プラグインを役割分担することで、それぞれをシンプルで再利用しやすくなる。例えばファイルフォーマットはそのままで入力はAmazon S3に対応するとか」(古橋氏)

古橋氏はEmbulk紹介の冒頭で「これがfluentd以上にはやってくれると嬉しいです」と切り出しています。実際に、fluentdのようにリアルタイムでログを収集する場面よりも、大規模なデータファイルをアプリケーションやデータベースにバッチ処理で読み込ませる場面の方が十分多いと思われます。Embulkのプラグインやエコシステムが充実していけば、fluentdよりも普及する可能性はかなり高いのではないでしょうか。

Embulk, an open-source plugin-based parallel bulk data loader from Sadayuki Furuhashi

このエントリーをはてなブックマークに追加
follow us in feedly

タグ : Embulk , クラウド



≫次の記事
YouTubeがHTML5のVideoタグをデフォルトにしたと表明、従来のFlashに代わり
≪前の記事
日本HP、Xeonプロセッサを採用した無停止サーバ「HP Integrity NonStop X」発表

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed



Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus