Hive UDF 문자열 디코딩 함수
@Description(name = "decoder_url", value = "_FUNC_(url [,code][,count]) - decoder a URL from a String for count times using code as encoding scheme ", extended = ""
+ "if count is not given ,the url will be decoderd for 2 time,"
+ "if code is not given ,GBK is used")
public class UDFDecoderUrl extends UDF {
private String url = null;
private int times = 2;
private String code = "GBK";
public UDFDecoderUrl() {
}
public String evaluate(String urlStr, String srcCode, int count) {
if (urlStr == null) {
return null;
}
if (count <= 0) {
return urlStr;
}
if (srcCode != null) {
code = srcCode;
}
url = urlStr;
times = count;
for (int i = 0; i < times; i++) {
url = decoder(url, code);
}
return url;
}
public String evaluate(String urlStr, String srcCode) {
if (urlStr == null) {
return null;
}
url = urlStr;
code = srcCode;
return evaluate(url, code,times);
}
public String evaluate(String urlStr, int count) {
if (urlStr == null) {
return null;
}
if (count <= 0) {
return urlStr;
}
url = urlStr;
times = count;
return evaluate(url, code,times);
}
public String evaluate(String urlStr) {
if (urlStr == null) {
return null;
}
url = urlStr;
return evaluate(url, code,times);
}
private String decoder(String urlStr, String code) {
if (urlStr == null || code == null) {
return null;
}
try {
urlStr = URLDecoder.decode(urlStr, code);
} catch (Exception e) {
return null;
}
return urlStr;
}
}
클래스에서 org.apache.hadoop.hive.ql.exec.FunctionRegistry에 추가
registerUDF("decoder_url", UDFDecoderUrl.class, false);
Hive를 컴파일하거나 프로필 방식을 통해 읽게 하거나, 이후에 새로 추가된 함수를 프로필에 설정하면 영원히 편안하게 할 수 있습니다.
위의 클래스 UDF Decoder Url은jar 패키지로hive에 불러와야 하고,hive-site가 필요합니다.xml 설정은 다음과 같은jar 패키지를 불러옵니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception Class에서 에러 코드 해석 ~초기초편~직장에서 C# 프로젝트가 내뿜는 오류 코드를 구문 분석하고 오류의 위치를 확인하기 위해 Exception class를 활용할 수 있었습니다. 지금까지 Exception Class 에 대해서 별로 파악할 수 없었기 때...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.