hive表中json字串轉map的處理

2021-06-26 23:07:59 字數 1522 閱讀 1504

有一次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...