[groonga-dev,03268] Re: Embulk-output-groongaの紹介と質問

Back to archive index

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



groonga-dev メーリングリストの案内
Back to archive index