hive的udf,過濾表情等非法字元

2021-09-24 00:00:21 字數 1115 閱讀 1283

實際工作環境中hive匯出資料到mysql,總是報錯

ncorrect string value: 『\xf0\x9f\x98\x97\xf0\x9f…』

這是由於手機表情不支援utf-8的

運營那邊需要nickname,所以就將暱稱中的表情過濾掉

1.寫過濾表情邏輯

/**

* created by liutao on 2019/5/22 16:31

*/public class filteremo extends udf

}string result=out.tostring().trim();

result=result.replaceall("\\?", "").replaceall("\\*", "").replaceall("<|>", "").replaceall("\\|", "").replaceall("/", "");

return result;

}public static void main(string args)

}

2打包到linux環境上

3在hive命令中,輸入

add jar /root/filter1.jar;

create temporary function remo as 'udf.filteremo';

查詢select id,remo(nickname) name from ods_userinfo where dt='';

但是注意一點,這個註冊的函式並不是一直都存在的,每次hive關閉再啟動就消失了,所以最好是通過shell指令碼或者hive -e ,hive -f在裡面每次需要呼叫的時候再操作一邊

hive -e "

add jar /root/filter1.jar;

create temporary function remo as 'udf.filteremo';

select id,remo(nickname) name from ods_userinfo where dt='';

"

Hive中UDF的使用

udf user defined function 是對hive自帶函式的一種補充,並極大擴充了hql的作用範圍,不僅使 更加簡潔,也減少了很多重複工作,提高任務執行效率。udf.rank 該函式用於分組limit輸出,如 拉取每個使用者的前100條語料 需要對使用者cuid進行分組後,再分別取每組...

HIVE中的UDF程式設計

udf 一進一出 udaf 多進一出 aggregation 聚集 類似於count max min udtf 一進多出 show functions 檢視乙個函式的使用 desc function extended upper 1.修改pom.xml junit junit 4.10 test o...

hive中的udf時間函式用法

1 from unixtime函式 用法為將時間戳轉換為時間格式 語法 from unixtime bigint unixtime string format 返回值為string 例如 hive select from unixtime 1326988805,yyyymmddhh from tes...