hive 表字段中存在^A 分割符处理

今天接到一个问题,在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转换成字符串,然后在替换处理

 

你可能感兴趣的:(hive)