hive 表字段中存在^A 分割符處理
阿新 • • 發佈:2019-02-11
今天接到一個問題,在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轉換成字串,然後在替換處理