hiveカスタム関数の作成とhiveロードの説明
1784 ワード
0 hive udfの役割はいずれもフィールドの単純な処理に限られ、
udf定義が適用されるには、一般的に3つの方法があります.
a)hivercファイル中b)hqlファイル中書き込みロードc)hive/scrpits/ファイル名の小さい順から大きい順にフォルダ下のファイルを優先的にロードする
これは仕事でよく使われると言われていますが、これは私の仕事ではほとんど使ったことがありません.
1シミュレーションoracl関数instr(xiangmu,'登録済み(')の効果
2 javaコード:
package hiveudf;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
public class instrfun extends UDF{ //
public IntWritable evaluate(Text source, Text part) {
String sourceStr = source.toString();
String partStr = part.toString();
int indexPart = sourceStr.indexOf(partStr); // java 0
indexPart++;
return new IntWritable(indexPart);
}
}
3このjavabeanをhive-udfにパッケージします.JAr、前回Linuxサーバへ
あるいはhive/libの下に置いてもっと正式な点を見てもいいです.そうすれば、4ステップ目のadd jarはhive/libのパスに変更する必要があります.
4 hiveテーブルこの関数の登録と使用:hiveコマンドラインの下で、次の文を実行します.
add jar /home/new_load_data/lib/hive-udf.jar;
create temporary function instrfun as 'hiveudf.instrfun';
5 hive環境での書き方:
select instrfun(xiangmu,' (') from f_trademark_tmp_hdfs_ext_20150717 limit 4;
参照リンク:
http://blog.csdn.net/zythy/article/details/18818559
対応工事jarは添付ファイルをご覧ください
ロードの説明:
もしあなたが修正しているなら.hiverc後にhiveクライアントhive>内を再起動してカスタム関数を実行すると、実行できます
hiveクライアントがhivercのファイルを再読み込みしたため
スクリプトで実行したい場合は、カスタム関数をxxに書くなどします.sql通過
hive -t -S -h 192.168.20.200 -f/user/aaa.sql方式では、このときhive server端を歩いて、
正しく実行するにはhiveを再起動する必要があります.