有一次a表中乙個欄位a string
但是存的是
要將a表的a欄位匯入到b表的b欄位
但是b欄位的型別是map
會報錯 cannot convert column 1 from string to map.
那麼想到用udf函式來解決
寫了自定義函式返回map型別
public mapevaluate(string json) throws jsonexception
return map;
}public static mapgetmap4json(string jsonstring) throws jsonexception
return valuemap;
} 但是map型別的字段用以逗號分隔的表的時候,會在遇到類似"dealtype":[23,311,226]的值時分隔錯誤。
所以,我做了調整。使得輸出型別為string,但是結果類似a=a;b=b的格式輸出。這樣,有map欄位的表中用;分隔map,用=分隔key和value
**如下:
public class stringfromjson extends udf
return temp;
}public static string getmap4json(string jsonstring) throws jsonexceptionelse
}return aa.tostring();}}
這樣,測試過程如下:
1建a表:
create table if not exists tablea(user string,
json string)
row format delimited fields terminated by '\;'
2:load資料
檔案資料如下:
niuxiao;
載入**:
load data local inpath '/home/test' overwrite into table tablea;
3:建立b表
create table if not exists tableb(user string,
jsonmap map)
row format delimited fields terminated by '\t'
collection items terminated by '\;'
map keys terminated by '='
stored as textfile;
4:載入jar包
add jar /home/yda/unitereport/pcmobile/sitetraffic/test/mapfromjson.jar;
create temporary function getmap as 'com.udf.getmapfromjson';
5:導a表資料到b表
insert into table tableb
select user,getmap(json) from tablea;
ok~~~
js中字串轉json
使用ajax的開發專案過程中,經常需要將json格式的字串返回到前端,前端解析成js物件 json ecma 262 e3 中沒有將json概念寫到標準中,還好在 ecma 262 e5 中json的概念被正式引入了,包括全域性的json物件和date的tojson方法。1,eval方式解析,恐怕這...
Hive 解析json字串
get json object string json string,string path 說明 第乙個引數填寫json物件變數 第二個引數使用 表示json變數標識,然後用 或 讀取物件或陣列 如果輸入的json字串無效,那麼返回null。每次只能返回乙個資料項。data 為 test表中的字段...
json 字串轉物件
json 字串為 var str 1,eval方式解析,恐怕這是最早的解析方式了。如下 function strtojson str 2,new function形式,比較怪異哦。如下 function strtojson str 3,使用全域性的json物件,如下 function strtojs...