LoginSignup
9
8

More than 5 years have passed since last update.

EmbulkをJavaに組み込んで実行する

Last updated at Posted at 2016-06-19

こちらのIssueで紹介されている通りです。
https://github.com/embulk/embulk/issues/421
(Issueだとあんまり気付かれないので、Issueと内容は同じですが、qiitaでのシェアを目的としてます。)

EmbulkEmbedというクラスを呼び出して、下記にようにすればJavaからEmbulkを実行できます。

EmbulkのJarはhttps://dl.bintray.com/embulk/maven/とかから最新版をダウンロードすると良いと思います。

import java.io.File;
import org.embulk.EmbulkEmbed;
import org.embulk.EmbulkEmbed.Bootstrap;
import org.embulk.config.ConfigLoader;
import org.embulk.config.ConfigSource;

public class EmbulkEmbedTest {
    public static void main(String[] args) throws Exception {
        Bootstrap bootstrap = new EmbulkEmbed.Bootstrap();
        EmbulkEmbed embulk = bootstrap.initializeCloseable();
        try {
            ConfigLoader loader = embulk.newConfigLoader();
            ConfigSource source = loader.fromYamlFile(new File(args[0]));
            embulk.run(source);
        } finally {
            embulk.destroy();
        }
    }
}

注意点としては、EmbulkのPluginがJRubyを使うため、それを参照させるように必要があります。すでにembulk gem install ...でPluginをインストールしている場合には、下記のようにライブラリがインストールされているので参照すると良いかと思います。

Linux/OSX/*BSD
export GEM_HOME=/user/.embulk/jruby/2.2.0

ただ、Embulkはあんまり外部プログラムに組み込むことは想定していないので、Javaからシェルを呼び出して実行したほうが良いかもしれない、みたいです。
参考までに。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8