av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java實(shí)現(xiàn)往hive 的map類(lèi)型字段寫(xiě)數(shù)據(jù)

瀏覽:10日期:2022-08-08 18:06:20
往hive 的map類(lèi)型字段寫(xiě)數(shù)據(jù)

該表的該字段類(lèi)型是map<string,string>

對(duì)應(yīng)類(lèi)的該屬性的類(lèi)型需要定義成String,不可定義成Map<String,String> !!

方法1:

建表語(yǔ)句定義map的分隔符:

row format delimited fields terminated by ’|’ collection items terminated by ’,’ map keys terminated by ’:’ NULL DEFINED AS ’’

然后在java中封裝好map后,不可直接把map.toString()的字符串寫(xiě)入字段(會(huì)有“=”,不能正確組成JSON格式的內(nèi)容),也不可序列化為JSON格式的字符串后寫(xiě)入字段(會(huì)加很多“”)!需要自己定義toString的方法:

public static String insertToMap(Map<String, String> map) {StringBuilder sb = new StringBuilder();Set<String> set = map.keySet();for (String s : set) { sb.append(s).append(':').append(StringUtils.isBlank(map.get(s)) ? 'NULL' : map.get(s)).append(',');}String str = sb.toString();return str.substring(0, str.length() - 1); }

字符串是不帶雙引號(hào)和兩端花括號(hào)的字符串,這樣插入到字段時(shí),hive會(huì)自動(dòng)為key和value都添加雙引號(hào),也會(huì)在兩端添加花括號(hào)!(為啥為空時(shí)需要把value設(shè)置成NULL?如果為空不寫(xiě)時(shí),怕hive處理時(shí)出錯(cuò),可能會(huì)處理成帶四個(gè)雙引號(hào)的NULL,所以手動(dòng)指定空為'NULL'字符串)

方法2:

建表語(yǔ)句不用定義map的分隔符:

然后在java中封裝好map后,不可直接把map.toString()的字符串寫(xiě)入字段,也不可序列化為JSON格式的字符串后寫(xiě)入字段!需要自己定義toString的方法:

public static String insertToMap(Map<String, String> map) {StringBuilder sb = new StringBuilder();Set<String> set = map.keySet();for (String s : set) { sb.append(s).append('003').append(StringUtils.isBlank(map.get(s)) ? 'NULL' : map.get(s)).append('002');}String str = sb.toString();return str.substring(0, str.length() - 1); }

得到的則是正確的字段內(nèi)容!

hive中默認(rèn)是用“003”分隔key與value,用“002”分隔兩個(gè)鍵值對(duì)!

以上是今天嘗試好幾種方法整理后的結(jié)論!

hive-map類(lèi)型字段的定義與插入

map類(lèi)型定義了一種kv結(jié)構(gòu),在hive中經(jīng)常使用。

如何定義map類(lèi)型呢?

create table employee(id string, perf map<string, int>) ROW FORMAT DELIMITEDFIELDS TERMINATED BY ’t’ COLLECTION ITEMS TERMINATED BY ’,’ MAP KEYS TERMINATED BY ’:’;

其中fields是字段分隔符,collection是每個(gè)kv對(duì)的分隔符,map keys是k與v的分隔符。

導(dǎo)入數(shù)據(jù)時(shí),只需要按對(duì)應(yīng)分隔符處理好數(shù)據(jù)即可。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 色天堂影院 | 日本毛片在线观看 | 三级在线播放 | 成人精品一区二区三区 | 特级丰满少妇一级aaaa爱毛片 | 九月丁香婷婷 | 日韩黄视频 | 日韩不卡一区二区 | 日本一本视频 | 嫩草视频在线观看 | 五月天激情综合网 | 黄色小视频在线观看 | 日本免费网站 | 手机av免费 | 免费av大片 | 免费一级a毛片 | 亚洲一区二区在线播放 | 一本色道久久综合亚洲精品小说 | 色哟哟一区二区三区 | 中文字幕在线免费播放 | 国产日韩欧美一区二区 | 久久九九免费视频 | 中文字幕欧美激情 | 国产免费一区 | 日韩网站免费观看 | 欧美国产日韩一区二区 | 羞羞的视频网站 | 日韩黄视频 | 日韩免费高清视频 | a视频| 丰满少妇高潮无套内谢 | 精品福利在线 | 在线中文av| 亚洲成人精品在线观看 | 国产成人小视频 | 九色国产| 成年人国产| 免费一区二区视频 | 国产精品成人一区二区三区 | 99这里有精品 | 国产欧美一区二区三区在线看蜜臀 |