Hiroyuki Sato
hiroy****@gmail*****
2015年 5月 22日 (金) 09:18:26 JST
須藤さん 佐藤です。 ご連絡をありがとうございます。 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