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

Back to archive index

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



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