Apache Hive - 复杂数据类型映射 不起作用

2024-03-31

蜂巢版本2.1.1

问题描述:集合项终止值作为映射键插入

蜂巢表:

CREATE TABLE profiles(
id int,
name struct<first_name: string, middle_name: string, last_name: string>,
phone struct<home: string, office: string>,
address map<string,struct<streat:string, appartment:int, zip:string>>
) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '-'
MAP KEYS TERMINATED BY '='
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

Data:

1000,Suresh--S,1234567890-1234567890,home=Venkatapuram1-2020-500001
1001,Mahesh-X-M,1234567890-1234567890,home=Venkatapuram2-2021-500001

数据负载:

load data inpath '/handson/profiles_data.txt' overwrite into table profiles;

select语句的实际数据:

SELECT * FROM profiles; 

1000        
{"first_name":"Suresh","middle_name":"","last_name":"S"}        
{"home":"1234567890","office":"1234567890"}     
{"home": 
{"streat":"Venkatapuram1",**"appartment":null,"zip":null},"2020":null, 
"500001": null}

1001        
{"first_name":"Mahesh","middle_name":"X","last_name":"M"}        
{"home":"1234567890","office":"1234567890"}
{"home": 
{"streat":"Venkatapuram2",**"appartment":null,"zip":null},"2021":null, 
"500001": null}

预期的:

1000        
{"first_name":"Suresh","middle_name":"","last_name":"S"}        
{"home":"1234567890","office":"1234567890"}
{"home":{"streat":"Venkatapuram1",**"appartment":2020,"zip":"500001"}**}

1001        
{"first_name":"Mahesh","middle_name":"X","last_name":"M"}        
{"home":"1234567890","office":"1234567890"} 
{"home": {"streat":"Venkatapuram2",**"appartment":2021,"zip":"500001"**}}

正如回答:MAP 数据类型中的 HIVE 嵌套 ARRAY https://stackoverflow.com/questions/18812025/hive-nested-array-in-map-data-type,您只能覆盖 hive 中的前三个分隔符,而 hive 实际上支持 8 个。在嵌套数据结构中,对于每个嵌套级别,都会使用后续分隔符。

在您的配置单元表中,位于结构体内部的字段之间的分隔符address地图是 \u004 (Unicode 4),并且不能被覆盖。

您应该将输入更改为:

1000,Suresh--S,1234567890-1234567890,home=Venkatapuram1\u00042020\u0004500001 
1001,Mahesh-X-M,1234567890-1234567890,home=Venkatapuram2\u00042021\u0004500001
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Hive - 复杂数据类型映射 不起作用 的相关文章

随机推荐

  • 从加载到内存的 24 位 BMP 文件中获取 HBITMAP

    我有一个 24 位 BMP 文件加载到 RAM 中 我正在尝试为此图像文件创建一个 HBITMAP 我发现了一些我一直在尝试的例子 但似乎无法发挥作用 基本上 我需要该文件的 HBITMAP 以便我可以卸载该文件并保留 HBITMAP 稍后
  • savefig - 文本被截断

    假设我创建了一个情节 import matplotlib pyplot as plt plt clf import numpy as np props np random randint 0 100 200 x np arange 1 20
  • python:具有多态性的类属性/变量继承?

    在我作为一名 python 学徒的努力中 如果我尝试使用类属性 我最近会陷入一些奇怪的 从我的角度来看 行为 我不是在抱怨 但希望能提供一些有用的评论来阐明这个问题 为了将复杂的问题简化为更简洁的问题 我会这样表述 确保类属性的行为更像继承
  • 函数“SUM 不存在”

    我正在使用 mysql 5 5 11 当我执行下面的脚本时 INSERT INTO payments created Amount user Remarks orderid paymethod VALUES 2016 09 03 0 0 a
  • 如何手动发布JAR到mavencentral?

    我创建了一个开源项目 https github com Kshitiz Sharma log4j weblayout我想将其发布到 Maven Central 以便用户只需在 pom xml 中引用该库即可使用该库 就像这样
  • 防止 jquery-validate 使用 title 属性作为错误消息?

    Jquery 验证使用title属性作为错误消息 我用title属性来提供用户工具提示 但我不希望它取代验证错误消息 在这个完整的示例中 我设置了姓字段有一个title属性 同时离开名场没有title属性 当表单提交时 名字段正确显示错误消
  • MSTest V2 按顺序执行单元测试 -> [DoNotParallelize]

    我有一个关于按顺序运行单元测试的问题 不幸的是 在这种情况下 不能选择并行运行它们或模拟数据库 该项目是用 NET core 3 1编写的 UnitTests需要在Unittest运行之前和之后执行数据库操作 看完之后https www m
  • 将列表传递给 python 类[重复]

    这个问题在这里已经有答案了 我有这个简单的课程 class revs def init self rev us accs self rev rev self us us self accs accs 我有这段代码用于将值分配给列表并且位于循
  • 放弃 gridview 固定标题

    正在开发 asp net Gridview 控件 好吧 我试了又试 也许搜索了整个网络 但我找不到任何适合我的 ASP NET gridviewcontrol 的东西 它可以修复标题并允许排序 但最重要的是 所有浏览器都可以工作 而不仅仅是
  • 如何在 C++ 中存储位数组?

    在 C 中存储位数组 无 Boost 只是标准容器 例如表示卷分配位图 的最佳方式是什么 我想std vector
  • Ruby on Rails 数据库迁移不会在 MySQL 表中创建外键

    我正在尝试修改 Ruby on Rails 应用程序中的数据库迁移 我使用 MySQL 作为数据库 并且想将外键添加到正在创建的表中 我正在使用以下代码 虽然遵循在适当列上创建空值的规范 但没有应用外键约束 class CreateBook
  • 如何在 Bootstrap 表单上放置背景图像?

    我正在尝试使用 Bootstrap 框架在表单上放置背景图像 例如在文本和输入后面 就像我网站的背景图像 但图像出现在底部 我希望它位于 容器 内 我的代码是这样的 div class container div class thumbna
  • 将时间设置为 00:00:00

    我在 Java 中重置时间时遇到问题 对于给定日期 我想将时间设置为 00 00 00 这是我的代码 Resets milliseconds seconds minutes and hours from the provided date
  • 读取未定义的对象属性时强制 JavaScript 异常/错误?

    我是一位经验丰富的 C Java 程序员 第一次使用 Javascript 我使用 Chrome 作为浏览器 我创建了几个带有字段和方法的 Javascript 类 当我读取一个不存在的对象字段时 由于我的拼写错误 Javascript 运
  • 不调用bind()的情况下监听()

    我尝试了以下方法 int sockfd socket listen sockfd 10 accept sockfd 没有一个调用失败 并且程序开始阻塞 就像我调用了bind 一样 在这种情况下会发生什么 由于没有本地地址或端口 是否永远无法
  • Spring @Autowire 两个未在 ApplicationContext 中定义的同一类的 bean

    我正在开发 Spring MVC 应用程序并遇到问题 我是Spring的新手 所以如果我的工作有点笨拙 请原谅我 基本上我有一个java类ContractList 在我的应用程序中 我需要此类的两个不同对象 它们都必须是单例 public
  • 主干+rails TypeError:List.Header不是构造函数

    我正在尝试按照从该网站购买的教程进行操作 http www backbonerails com http www backbonerails com 我正在关注该系列的第五集 起床运行 第 1 部分 在视频的 46 52 左右 他有 lis
  • go run:无法运行非主包

    这是简单的 go 应用程序 如果我运行以下代码 我会收到 go run 无法运行非主包 错误 package zsdfsdf import fmt func Main fmt Println sddddddd 要修复它 我只需要将包命名为m
  • 如何在 Terraform 中定义一个根据变量可能为空的列表?

    我需要在 Terraform v0 10 8 中定义一个资源 该资源具有一个列表属性 该属性可能为空也可能不为空 具体取决于变量 请参阅volume ids在下面的定义中 resource digitalocean droplet work
  • Apache Hive - 复杂数据类型映射 不起作用

    蜂巢版本2 1 1 问题描述 集合项终止值作为映射键插入 蜂巢表 CREATE TABLE profiles id int name struct