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

Back to archive index

Hiroyuki Sato hiroy****@gmail*****
2015年 5月 22日 (金) 14:07:21 JST


須藤様

佐藤です。

ffi-yajlを使ったgroonga-command-parserを使った
embulk-output-groongaを使ってみました。

簡単な試験ですが、正常に動作しました。
ありがとうございます。

embulk gem install libyajl2をするとインストールに失敗する問題は
次のembulkのリリースでFIXされます。
https://github.com/embulk/embulk/issues/184

新しいembulkとgroonga-command-parserが出る頃にgemをリリースしようとおもいます。
それまでに追加できる機能は追加しようとおもいます。

2015年5月22日 9:39 Hiroyuki Sato <hiroy****@gmail*****>:
> 佐藤です。
>
> 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



-- 
Hiroyuki Sato



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