鱒身(Masu_mi)のブログ

知った事をメモする場所。

Embulkを使ったメモ

Embulkを使った。バルクデータ転送用だけあって目的通りに使うと便利そう。 プラグインが多いのとプラグインを一般な人には書きやすそうなのが良い。でもJava, Ruby経験が浅いので、まだ慣れないけど作ることは出来た。

Embulkはバルクデータローダ:

Embulk is a open-source bulk data loader that helps data transfer between various databases, storages, file formats, and cloud services.
Embulkイメージ

使ってみた

インストール資料 に従って導入した。

使ってみる流れ

だいたい下のステップを繰り返して設定ファイルを準備していった。

  1. 設定ファイル編集
    vim ./config.yml
  2. プレビュー
    embulk preview [-G] ./config.yml
  3. 実施
    embulk run ./config.yml

使い方は公式をたどれば苦労しない。プラグインの利用は公式Docの他にQiitaのプラグインまとめでだいたい知れる。 Plugin化されている箇所(input, parser, decoder, formatter, encoder, filter, output, executor)が多い。 実際Pluginの提供はとても多い

parser-grokというプラグインが便利だった。またoutput-elasticsearch利用するElasticsearchに合わせてver.を選ぶ必要がある。 これにははまっていた。RESTじゃなくてTCP上でJavaAPIを使って投入しているっぽい。 環境によってはjrubyのメモリ制限に引っかかる場合があるらしく-J-Xmx1000mのようにオプション指定して実行することで回避する。

アーキテクチャの勉強

下のまとめにコードリーディングした人の記事のリンクがある。

プラグイン開発

grokの柔軟さのお陰で結局は不要になったのだけど自分でもpluginを開発してみたがそんなに難しくなかった。 公式のカスタマイズを見れば大枠がわかる。公式はJavaだけが記載されててrubyで開発したい時はJavaからどう呼ばれるか?を読むなどが必要になる。 コスト下の記事を参考に真似るだけでもとりあえずいける。実際、簡単に作れた。

ただしembulk newembulk mkbundleの違いとか色々とわかっていない。しかし両方ともrubyのgem, bundleに関連が強い感じなので、私のruby無知に因るところだと思う。 “embulk のプラグイン開発時にお試し実行するには”って記事に記載されている最適化オプションをオフにするフラグは試行錯誤が確かに早くなるので大事だと思った。

重要資料と利用の助け

古橋さんのjava,jrubyの接続周りに関する記述があるコメント。コメント先の記事も面白かった。