今日もプログラミング

IT技術とかプログラミングのこととか特にJavaを中心に書いていきます

Embulkをさわり始めてみた

最近リリースされた、オープンソースのバルクローダEmbulk

業務システムでもテキストファイルをRDBにロードすることはよくあるので、使えるかもしれないと思い、さわりはじめた。

 

Quick Startを試した後、くまメモを参考にさせてもらい動かしてみる。成功。

 

とかなんとかやっているうちに、0.4.3が出たのでダウンロード。

しかし、再度試してみるとエラーが発生!?

C:\Development\Embulk>java -jar embulk.jar run random.yml
2015-02-18 21:37:24 JST: Embulk v0.4.3
Embulk::PluginLoadError: Unknown input plugin 'random'. embulk/input/random.rb is not installed. Run 'embulk gem search -rd embulk-input' command to find plugin
s.
          lookup at file:/C:/Development/Embulk/embulk.jar!/embulk/plugin_registry.rb:30
          lookup at file:/C:/Development/Embulk/embulk.jar!/embulk/plugin.rb:188
  new_java_input at file:/C:/Development/Embulk/embulk.jar!/embulk/plugin.rb:150
  new_java_input at /C:/Development/Embulk/embulk.jar!/META-INF/jruby.home/lib/ruby/1.9/forwardable.rb:201
             run at file:/C:/Development/Embulk/embulk.jar!/embulk/command/embulk_run.rb:278
          (root) at classpath:embulk/command/embulk.rb:43
org/embulk/plugin/PluginManager.java:42:in `newPlugin': org.embulk.config.ConfigException: InputPlugin 'random' is not found
        from org/embulk/spi/ExecSession.java:106:in `newPlugin'
        from org/embulk/spi/Exec.java:54:in `newPlugin'
        from org/embulk/exec/LocalExecutor.java:339:in `newInputPlugin'
        from org/embulk/exec/LocalExecutor.java:419:in `doRun'
        from org/embulk/exec/LocalExecutor.java:40:in `access$000'
        from org/embulk/exec/LocalExecutor.java:358:in `run'
        from org/embulk/exec/LocalExecutor.java:355:in `run'
        from org/embulk/spi/Exec.java:21:in `doWith'
        from org/embulk/exec/LocalExecutor.java:355:in `run'
        from org/embulk/command/Runner.java:111:in `run'
        from org/embulk/command/Runner.java:64:in `main'
        from file:/C:/Development/Embulk/embulk.jar!/embulk/command/embulk_run.rb:278:in `run'
        from classpath:embulk/command/embulk.rb:43:in `(root)'
        from classpath_3a_embulk/command/classpath:embulk/command/embulk.rb:43:in `(root)'
        from org/embulk/cli/Main.java:13:in `main'
Caused by:
file:/C:/Development/Embulk/embulk.jar!/embulk/plugin_registry.rb:30:in `lookup': org.jruby.exceptions.RaiseException: (PluginLoadError) Unknown input plugin 'r
andom'. embulk/input/random.rb is not installed. Run 'embulk gem search -rd embulk-input' command to find plugins.
        from file:/C:/Development/Embulk/embulk.jar!/embulk/plugin.rb:188:in `lookup'
        from file:/C:/Development/Embulk/embulk.jar!/embulk/plugin.rb:150:in `new_java_input'
        from /C:/Development/Embulk/embulk.jar!/META-INF/jruby.home/lib/ruby/1.9/forwardable.rb:201:in `new_java_input'
        from file:/C:/Development/Embulk/embulk.jar!/embulk/command/embulk_run.rb:278:in `run'
        from classpath:embulk/command/embulk.rb:43:in `(root)'

 

成功したときは0.3.2だったけど、何か変わったのかな?

スタックトレースを見ると、気になるのは

embulk/input/random.rb is not installed

のところ。ホームディレクトリ(C:\Users\ユーザ名\)を見ると、

.embulk\jruby\1.9\gems\embulk-plugin-input-random-0.0.1\lib\embulk\input_random.rb

というファイルがある。微妙にファイル名が違うなあ。上のファイルを

.embulk\jruby\1.9\gems\embulk-plugin-input-random-0.0.1\lib\embulk\input\random.rb

に移動したら、正常に動いた。

 バージョンアップしてプラグインの検索方法が変わったのかな?

と思って、Release Documentを探していたら、0.4.0のところに以下の記述が。

IMPORTANT: Changed plugin path name from lib/embulk/<caetgory>_<name>.rb to lib/embulk/<category>/<name>.rb.

なるほど。仕様が変わっていたのか。

 

とりあえず今回はここまでで。次回はembulk-output-mysqlを試せるといいなあ。

 

OS : Windows 7

Embulk : 0.3.2, 0.4.3