私はStaticLookupUDFというUDFクラスを構築していますが、構築中にローカルファイルから静的データをロードする必要があります。ハイブは、各レコードに対して新しいUDFオブジェクトをインスタンス化しますか?
この場合、evaluate()メソッドの呼び出しごとに静的データを再ロードしたくないという点で、私は必要以上に作業を複製しないようにしたいと思います。
明らかに、各マッパーは独自のUDFのインスタンス化を使用しますが、処理されるレコードごとに新しいインスタンスが生成されるのは明らかです。
たとえば、の場合、マッパーは3行を処理します。単一のStaticLookupUDFを作成してevaluate()を3回呼び出すか、各レコードに対して新しいStaticLookupUDFを作成し、インスタンスごとに1回だけ評価を呼び出しますか?
2番目の例が真であれば、どのような方法でこれを構成すればよいですか?
ドキュメントのどこにもこれが見つかりませんでしたが、コードを見ていきますが、同時にスマートな人々に尋ねると思いました。
スタティックデータが何回読み込まれているのか分かりませんが、望ましくない方法で読み込まれた場合、stdinから読み込んでstdoutに書き込むスクリプト/ jarでデータをストリーミングできます。この場合、静的データはワーカープロセスごとに1回ロードされます。 –
私はそれをどうやって行うのか少し詳しく説明できますか? –
私はこの答えに言及しました(http://stackoverflow.com/questions/6178614/custom-map-reduce-program-on-hive-whats-the-rulehow-about-input-and-output/6840802#6840802)このwikiをチェックすることができます。https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Transform –