今天接到一个问题,在hive表字段中存在 ^A 内容:
ANokia^A ^A ^A RM-356 ^A ^A/UCWEB8.9.0.253/50/999
实际为 0x01 linux的导出数据默认的分隔符
这样在处理这个字段的时候每次都会误以为多个字段,其实只有一个字段,于是决定写udf处理下这个字段:
udf:
public String evaluate(String cloumnvalue) {
if(cloumnvalue == null){
return null;
}
byte b1[] = {0x01};
String str = new String(b1);
if(cloumnvalue.contains("^A")){
return cloumnvalue.replace("^A", "");
}else if(cloumnvalue.contains(str)){
String tmp = cloumnvalue.replace(" "+str, "");
tmp = tmp.replace(str+" ", "");
return tmp.replace(str, "");
}
return cloumnvalue;
}
首先把 0x01转换成字符串,然后在替换处理