iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java实现往hive 的map类型字段写数据
  • 543
分享到

java实现往hive 的map类型字段写数据

2024-04-02 19:04:59 543人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

往Hive 的map类型字段写数据 该表的该字段类型是map<string,string> 对应类的该属性的类型需要定义成String,不可定义成Map<Strin

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都添加双引号,也会在两端添加花括号!(为啥为空时需要把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的分隔符。

导入数据时,只需要按对应分隔符处理好数据即可。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: java实现往hive 的map类型字段写数据

本文链接: https://www.lsjlt.com/news/130922.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java实现往hive 的map类型字段写数据
    往hive 的map类型字段写数据 该表的该字段类型是map<string,string> 对应类的该属性的类型需要定义成String,不可定义成Map<Strin...
    99+
    2024-04-02
  • Java redis存Map对象类型数据怎么实现
    这篇文章主要介绍“Java redis存Map对象类型数据怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java redis存Map对象类型数据怎么实现”文章能帮助大家解...
    99+
    2023-06-30
  • Javaredis存Map对象类型数据的实现
    目录背景描述实体类父类子类方法1°方法2°背景描述 项目需要将设备采集到的最新经纬度信息存入redis缓存中,方便及时查询检索。考虑到根据检索条件不同,所查询的设备不...
    99+
    2024-04-02
  • Mysql json类型字段Java+Mybatis数据字典功能的实践方式
    目录前言应用场景介绍数据字典案例实践表结构实体类关系映射泛型擦除问题解决(7.21新增)效果展示总结前言 JSON类型是MySQL5.7.8中新加入的一种数据类型,并在后续版本尤其是...
    99+
    2024-04-02
  • mybatis返回map类型数据空值字段不显示怎么办
    这篇文章主要为大家展示了“mybatis返回map类型数据空值字段不显示怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mybatis返回map类型数据空值字段不显示怎么办”这篇文章吧。my...
    99+
    2023-06-29
  • mybatis返回map类型数据空值字段不显示的解决方案
    目录mybatis返回map数据空值字段不显示查询sql添加每个字段的判断空ResultType利用实体返回springMVC+mybatis查询数据mybatis返回map空值未返...
    99+
    2024-04-02
  • java中常见数据库字段类型有哪些
    本文小编为大家详细介绍“java中常见数据库字段类型有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“java中常见数据库字段类型有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2024-04-02
  • mysql添加enum类型的字段实现
    目录什么是Enum类型?创建表插入数据查询数据查询所有数据查询指定性别的用户类图总结mysql是一个常用的关系型数据库管理系统,它提供了多种数据类型用于定义表中的列。其中之一就是Enum类型,它允许我们在一个有限的选项列...
    99+
    2024-01-29
    mysql添加enum mysql enum添加
  • MySQL对JSON类型字段数据进行提取和查询的实现
    目录前言1. 问题现象2. 解决方案3. JSON数据查询3.1 一般基础查询操作3.2 一般函数查询操作4. JSON数据新增更新删除前言 昨天上线后通过系统报警发现了一...
    99+
    2024-04-02
  • MybatisPlus字段类型转换的实现示例
    目录resultMap的作用是什么mybatisPlus如何完成字段映射自动映射@TableField是能够指定jdbcType的mybatis如何完成查询参数转换先来回忆下在myb...
    99+
    2023-03-15
    MybatisPlus 字段类型转换 MybatisPlus 类型转换
  • MyBatis 查询 MySQL 实现返回 List<Map> 或 Map 类型数据操作
      MyBatis 查询 MySQL 数据库,返回结果可以是具体的类、Map、List 等等。将查询结果返回 Map 类型的优点是,不需要为本次查询额外创建类。如果只查询某几个特定的列,且不想额外创建...
    99+
    2023-09-06
    mybatis mysql java
  • php怎么更改数据表的字段类型
    在数据库开发中,我们经常需要更改数据表字段类型。有时候,我们需要将一个字段从数字类型更改为字符串类型或者日期类型更改为字符串类型。在这篇文章中,我们将学习如何使用PHP来更改数据表字段类型。连接数据库首先,我们需要使用PHP连接到数据库。我...
    99+
    2023-05-14
    数据库 php
  • php如何修改数据表的字段类型
    这篇文章主要介绍“php如何修改数据表的字段类型”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何修改数据表的字段类型”文章能帮助大家解决问题。在 PHP 中,修改数据表的字段类型是一项非常重...
    99+
    2023-07-05
  • php如何更改数据表的字段类型
    这篇文章主要介绍了php如何更改数据表的字段类型的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何更改数据表的字段类型文章都会有所收获,下面我们一起来看看吧。连接数据库首先,我们需要使用PHP连接到数据库...
    99+
    2023-07-05
  • php怎么修改数据表的字段类型
    在 PHP 中,修改数据表的字段类型是一项非常重要的操作。当我们需要通过代码来对数据库进行维护或更新时,我们经常会遇到需要修改表字段类型的情况,这包括字符集、数据类型、长度等。在本篇文章中,我会向你介绍如何通过 PHP 来修改数据表的字段类...
    99+
    2023-05-14
    php 数据库
  • Sequoiadb中怎么查看表字段的数据类型
    今天就跟大家聊聊有关Sequoiadb中怎么查看表字段的数据类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。【问题详细描述】 如何查看表...
    99+
    2024-04-02
  • java怎么实现数据类型的转换
    在Java中,可以使用类型转换操作符将一种数据类型转换成另一种数据类型。类型转换分为两种:隐式类型转换和显式类型转换。1. 隐式类型...
    99+
    2023-10-09
    java
  • 理解数据库字段类型:打造高效的数据架构
    整数 类型: INT、INTEGER 等 优势:存储整数(例如 ID、计数),支持快速比较和排序 局限性:存储范围有限,对于非常大的数字不合适 浮点数 类型: FLOAT、DOUBLE 等 优势:存储浮点数(例如货币、测量值),支持...
    99+
    2024-03-12
    数据库字段类型是数据库中存储数据的基本组成部分。选择正确的字段类型对于优化数据库性能、数据完整性和灵活至关重要。以下是常见的数据库字段类型及其各自的优势和局限性:
  • mysql更改表中某字段数据类型的案例
    mysql更改表中某字段数据类型的案例?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!在mysql中,可以使用“ALTER ...
    99+
    2024-04-02
  • Elasticsearch映射字段数据类型及管理的方法
    本篇内容主要讲解“Elasticsearch映射字段数据类型及管理的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Elasticsearch映射字段数据类型及管理的方法”吧!Elastics...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作