impalaでmrubyを動かす

以前impalaのudfについて調べていて、何か書いてみたいなと思っていた。最近、mysqlでmrubyを動かしている例があると知り、ちょうどmrubyも触ってみたいと思っていたので、今回はimpala udfとmrubyをテーマに、impalaのudfでmrubyが実行できるimpala-udf-mrb_evalを書いてみた。

c++、mruby、どちらも経験が浅いのでコードは稚拙ですが、一応こんな感じで動作します。大規模なデータセットで試してはないですが大きなデータセットで試すと現状だと十分なパフォーマンスがでない。。ですが、表現が広がっていい感じです。

> create function mrb_eval(string) returns string location '/path/to/libmrb_eval.so' symbol='MRBEval';
> select mrb_eval('(1..3).reduce(&:+)');
Query: select mrb_eval('(1..3).reduce(&:+)')
+----------------------------------------+
| default.mrb_eval('(1..3).reduce(&:+)') |
+----------------------------------------+
| 6                                      |
+----------------------------------------+
Fetched 1 row(s) in 0.02s

参考リンク

byebyehaikikyou

日記やIT系関連のネタ、WordPressに関することなど様々な事柄を書き付けた雑記です。ITエンジニア経験があるのでプログラミングに関することなどが多いです。

シェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする

Translate »