AnalyticsのSQL-MR関数をデバッグする方法です。ログだけで原因が特定できず、更にはサポートチームで再現できない時には非常に役に立つTipsかと思います。UDFを作成後にインストール、最後に実行です。Forestの実行中に元データが約50MBしか無いにも関わらずJVMのMaxHeapSizeを120GBまで設定してもOOMになるという事象が発生したので、その時のデバッグの流れを記載してみます。Asterのインタフェースから実行したのはforest_drive関数ですが、AMCでログを確認したところエラーとなっていたのは内部で実行されているforest_builderだったので、その関数を調査のついでに修正してみました。関数のダウンロードどこに格納されているかは環境に依存してしまいますが、関数名.zipもしくは関数名.jarでファイルを探せば見つかるはずです。VM環境では以下のパスに存在していました。ライブラリをインポートしたプロジェクトを作成Javaのプロジェクトを作成します。間違えて元の関数を上書きしないよう別名にしておきましょう。今回はforest_builder_debugにしました。libraryしていきます。次に追加した関数のpackageと同じ階層でデバッグ用のコードも合わせ、jarファイルからコピー&ペーストします。packageはforest_builderであれば以下のようになっていました。エラーメッセージから原因の場所を探すとscanRowsメソッド内の以下の部分にたどり着きます。forループの後ろにobjectOutputStream.reset();を追加したところ、大幅にメモリ使用量が抑えられ、50MBのデータも問題なく実行できるようになりました。インストールactでログインし、インストールコマンドを実行します。ファイル名しか指定できないのでファイルがあるディレクトリまで移動しておく必要があります。実行時はエラーとなった際に使用しているクエリの関数名部分を入れ替えるだけです。