Hiroyuki Sato
hiroy****@gmail*****
2015年 5月 22日 (金) 09:39:17 JST
佐藤です。 Embulkの開発者古橋さんに、不具合を回避する方法を教えてもらいました。 https://github.com/embulk/embulk/issues/184 gemを使ってembulkを導入すれば良いようです。 Install JRuby run gem install embulk run gem instal lembulk-output-groonga ffi-yajlを使う、groonga-command-parserまではインストールできました。 こちらで実装を進めていこうとおもいます。 2015年5月22日 9:18 Hiroyuki Sato <hiroy****@gmail*****>: > 須藤さん > > 佐藤です。 > ご連絡をありがとうございます。 > > > > 2015年5月21日 22:54 Kouhei Sutou <kou****@clear*****>: >> 須藤です。 >> >> In <CA+Tq-RqPPTwOZQgqq6tCp-TkhRfS6oybXwgAkokiVh=oQa03****@mail*****> >> "[groonga-dev,03254] Embulk-output-groongaの紹介と質問" on Wed, 20 May 2015 22:31:15 +0900, >> Hiroyuki Sato <hiroy****@gmail*****> wrote: >> >>> embulk-command-outputというのを作成中です。紹介と質問です。 >>> https://github.com/hiroyuki-sato/embulk-output-groonga >> >> すごい! >> いやぁ、あるといいかなぁと思っていたんですよねぇ。 >> >>> Embulkとは >>> >>> Embulk(エンバルク)はプラガブルなバルクローダです。 >>> CSVファイルをMySQLやPostgreSQLなどに簡単にインポートできるツールです >>> >>> これの出力先としてGroongaに出力できたらいいねと思い作ったのがこちらのプラグインです >>> >>> Embulkについてはこちらを参照ください。 >>> http://www.embulk.org/docs/ >>> http://qiita.com/hiroysato/items/397f36c4838a0a93e352 >>> >>> embulk-output-groongaの利用例 >>> >>> まだ作りかけですが、簡単なデータの投入はできるようになっています。 >>> (まだ文字列しかテストをしておりません) >>> >>> 例 >>> https://gist.github.com/hiroyuki-sato/d62b42a8c48299b3f9d3 >>> >>> 次のようにコマンドを実行するとCSVファイルからデータを読み込んで >>> Groongaの指定したテーブルにデータを投入します。 >>> >>> embulk run config.yml >> >> おぉ、動いていますねぇ。 >> >> https://github.com/hiroyuki-sato/embulk-output-groonga/blob/master/lib/embulk/output/groonga.rb#L84 >> >> はexist?のtypoかしら。 >> > > ありがとうございます。typoです。 > > >> >>> 質問 >>> groonga-clientなどのソースをみてぼちぼち書いておりますが >>> 次のような情報があるとよいと思ったので質問をいたします。 >>> >>> (1) 利用例について >>> groonga-clientのテーブルの作成や、カラムの作成などの例が載った >>> ソースはどこかにありますでしょうか? >>> 例えばgroonga-clientを使ったアプリケーションなど >> >> fluent-plugin-groongaというのがあって、それのoutputの方が参 >> 考になると思います。 > > fluent-plugin-groonga参考にします。 > >> >> https://github.com/groonga/fluent-plugin-groonga/blob/master/lib/fluent/plugin/out_groonga.rb >> >> NetworkClient周辺を見るといいと思います。 >> >> もし、テーブル・カラムの自動作成までサポートするならSchema・ >> TableDefinition・TableCreater周辺をみるといいと思います。 >> >>> (2) コマンドそのまま実行 >>> >>> groonga-clientで、下記のような文字列を渡したら >>> コマンドをそのまま実行することは可能でしょうか? >>> >>> table_create --name Site2 --flags TABLE_HASH_KEY --key_type ShortText >>> column_create --table Site2 --name title --type ShortText >> >> はい、実行できます。 >> bin/groonga-clientがあるんですが、そいつに流しこむと実行でき >> ます。実装は >> >> https://github.com/ranguba/groonga-client/blob/master/lib/groonga/client/command-line/groonga-client.rb >> >> にあります。 >> >>> (3) エラーハンドリング >>> >>> 返ってくるエラー処理の例などどこかにありますでしょうか? >> >> fluent-plugin-groongaが参考になると思います。 >> >> 基本的にGroonga::Client::Errorでrescueすればいいです。 >> > > ありがとうございます。 > >>> 課題 >>> >>> * groonga-command-parserのjruby対応(現在専用パッチを適用) >>> * JSONのパースに、yaj-rubyの代わりにjson-streamを使ったがjson-streamは遅い。 >>> * 代替案としてjavaクライアントを利用する(誰かが作成していれば) >> >> masterではffi-yajlを使うようにしたので試してみてください。 >> ffi-yajlだとJRubyでも動くとのことです。 > > ありがとうございます。早速ためしたのですが、embulk側の制限で > libyajl2がまだインストールできないです。 > なにか解決策があるか考えてみます。 > https://github.com/embulk/embulk/issues/184 > > jrjacksonを使ったら?というお話ですがやっぱり複数のパッケージをメンテナンスするのは > 大変ですね。 > >> >> groonga-command-parserの用途(JSON全体を一気にパースではなく、 >> 大きなJSONをストリームとして少しずつパース)では、yajl-ruby >> よりも高速になっているはずです。 >> >> 手元でるりまサーチ(*)のダンプデータをパースして速度を見なが >> ら作っていたんですが、それだとyajl-ruby版で33秒、ffi-yajl版 >> で5秒くらいでした。 >> >> (*) http://docs.ruby-lang.org/ja/search/ >> > > > すばらしい、ありがとうございます。 > >> >> -- >> 須藤功平 <kou****@clear*****> >> 株式会社クリアコード <http://www.clear-code.com/> >> >> Groongaベースの全文検索システムを総合サポート: >> http://groonga.org/ja/support/ >> パッチ採用 - プログラミングが楽しい人向けの採用プロセス: >> http://www.clear-code.com/recruitment/ >> プログラミングが好きな学生のための勉強会: >> http://www.seplus.jp/sezemi/ >> >> _______________________________________________ >> groonga-dev mailing list >> groon****@lists***** >> http://lists.osdn.me/mailman/listinfo/groonga-dev > > > > -- > Hiroyuki Sato -- Hiroyuki Sato