hive udf、udaf、udtf使用区分

1544 ワード

UDF:一進一出
実装方法:
1.UDFクラスの継承
2.evaluateメソッドの書き換え
3. このjavaファイルをjarにコンパイル
4.端末に次のコマンドを入力します.
hive> add jar test.jar;

hive> create temporary function function_name as 'com.hrj.hive.udf.UDFClass';

hive> select function_name(t.col1) from table t;

hive> drop temporary function function_name;

UDAF:多進一出
実装方法: 
1、ユーザーのUDAFはorg.apache.hadoop.hive.ql.exec.UDAFを継承しなければならない.
2.ユーザのUDAFは、org.apache.hadoop.hive.ql.execを実装する少なくとも1つの静的クラス、例えばUDAFEvealuatorを実装する
3、1つの計算関数が実現しなければならない5つの方法の具体的な意味は以下の通りである.
Init():主に計算関数を初期化し、内部状態をリセットします.一般的には、内部フィールドをリセットします.一般的に、最終的な結果を格納するために静的クラスに内部フィールドを定義します.
iterate():新しい値を集計するたびにメソッドが呼び出され、計算関数は集計結果に基づいて内部ステータスを更新します.入力値が合法的または正確に計算された場合、      trueを返します.
terminatePartial():Hiveが集計結果の一部を必要とする場合に呼び出され、集計計算の現在のステータスがカプセル化されたオブジェクトを返す必要があります.
merge():Hiveが1つの部分集約と別の部分集約をマージする場合に呼び出されます.
terminate():Hive最終集計結果の場合に呼び出されます.計算関数は,状態を1つの値としてユーザに返す必要がある.
4.                         。

UDTF:一進多出
実装方法:
1. 継承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF
2.initialize():UDTFは、最初にinitializeメソッドを呼び出します.このメソッドは、UDTFの戻り行の情報(戻り個数、タイプ)を返します.
3.process:初期化が完了すると、processメソッドが呼び出され、真の処理プロセスはprocess関数で、processでforward()ごとに 呼び出しは行を生成します.複数の列が生成された場合     複数のカラムの値を1つの配列に配置し、forward()関数に渡すことができます.
4.最後にclose()メソッド呼び出し、クリーンアップする必要があるメソッドをクリーンアップする