最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現往hive 的map類型字段寫數據

 更新時間:2021年07月22日 10:59:42   作者:二十六畫生的博客  
這篇文章主要介紹了java實現往hive 的map類型字段寫數據操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

往hive 的map類型字段寫數據

該表的該字段類型是map<string,string>

對應類的該屬性的類型需要定義成String,不可定義成Map<String,String> !!

方法1:

建表語句定義map的分隔符:

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

然后在java中封裝好map后,不可直接把map.toString()的字符串寫入字段(會有“=”,不能正確組成JSON格式的內容),也不可序列化為JSON格式的字符串后寫入字段(會加很多“\”)!需要自己定義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);
    }

字符串是不帶雙引號和兩端花括號的字符串,這樣插入到字段時,hive會自動為key和value都添加雙引號,也會在兩端添加花括號?。樯稙榭諘r需要把value設置成NULL?如果為空不寫時,怕hive處理時出錯,可能會處理成帶四個雙引號的NULL,所以手動指定空為"NULL"字符串)

方法2:

建表語句不用定義map的分隔符:

然后在java中封裝好map后,不可直接把map.toString()的字符串寫入字段,也不可序列化為JSON格式的字符串后寫入字段!需要自己定義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);
    }

得到的則是正確的字段內容!

hive中默認是用“\003”分隔key與value,用“\002”分隔兩個鍵值對!

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

hive-map類型字段的定義與插入

map類型定義了一種kv結構,在hive中經常使用。

如何定義map類型呢?

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

其中fields是字段分隔符,collection是每個kv對的分隔符,map keys是k與v的分隔符。

導入數據時,只需要按對應分隔符處理好數據即可。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot啟動訪問localhost:8080報錯404的解決操作

    SpringBoot啟動訪問localhost:8080報錯404的解決操作

    這篇文章主要介紹了SpringBoot啟動訪問localhost:8080報錯404的解決操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • JAVA中while循環(huán)的使用與注意事項

    JAVA中while循環(huán)的使用與注意事項

    這篇文章主要介紹了while循環(huán)在編程中的應用,包括其基本結構、語句示例、適用場景以及注意事項,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • spring boot 3.3.0和mybatis plus 3.5.6版本沖突的問題解決

    spring boot 3.3.0和mybatis plus 3.5.6版本沖突

    這篇文章主要介紹了spring boot 3.3.0和mybatis plus 3.5.6版本沖突的問題解決,文中介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • resttemplate設置params的方法

    resttemplate設置params的方法

    RestTemplate設置請求參數的方式根據請求類型(GET/POST)和參數形式(路徑參數、查詢參數、JSON請求體)有所不同,下面通過本文給大家介紹resttemplate設置params的方法,感興趣的朋友一起看看吧
    2025-04-04
  • SharedWorkerGlobalScope屬性數據共享示例解析

    SharedWorkerGlobalScope屬性數據共享示例解析

    這篇文章主要為大家介紹了SharedWorkerGlobalScope屬性數據共享示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 解析Java的JNI編程中的對象引用與內存泄漏問題

    解析Java的JNI編程中的對象引用與內存泄漏問題

    這篇文章主要介紹了Java的JNI編程中的對象引用與內存泄漏問題,重點講述了局部和全局引用時一些值得注意的地方,需要的朋友可以參考下
    2015-11-11
  • SpringBoot實現固定和動態(tài)定時任務的三種方法

    SpringBoot實現固定和動態(tài)定時任務的三種方法

    定時器是我們項目中經常會用到的,本文主要介紹了SpringBoot實現固定和動態(tài)定時任務的三種方法,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • mybatis實現批量插入并返回主鍵(xml和注解兩種方法)

    mybatis實現批量插入并返回主鍵(xml和注解兩種方法)

    這篇文章主要介紹了mybatis實現批量插入并返回主鍵(xml和注解兩種方法),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JFreeChart插件實現的折線圖效果實例

    JFreeChart插件實現的折線圖效果實例

    這篇文章主要介紹了JFreeChart插件實現的折線圖效果,結合實例形式分析了基于JFreeChart繪制折線圖的相關實現技巧,需要的朋友可以參考下
    2016-08-08
  • 關于二分法查找Java的實現及解析

    關于二分法查找Java的實現及解析

    這篇文章主要介紹了關于二分法查找Java的實現及解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論

吉安县| 肇州县| 大渡口区| 富阳市| 体育| 清水河县| 北碚区| 缙云县| 汽车| 灌南县| 柯坪县| 武安市| 西峡县| 临湘市| 临颍县| 建宁县| 台北县| 碌曲县| 霸州市| 报价| 浮山县| 怀集县| 麦盖提县| 云林县| 洛扎县| 永康市| 华坪县| 虹口区| 象山县| 深州市| 噶尔县| 巴东县| 常山县| 唐海县| 桦川县| 青州市| 龙南县| 龙泉市| 衡南县| 贡嘎县| 来宾市|