hive 嵌套复杂类型数据(map,array.struct)的时候自定义分隔符的问题
目前我一只的自定义的分隔符种类
MAP KEYS TERMINATED BY :key value分隔符
FIELDS TERMINATED BY:字段与字段之间的分隔符
COLLECTION ITEMS TERMINATED BY:一个字段各个item的分隔符
但是 当我嵌套复杂结构类型 的数据的时候 可能这几种自定义分隔符已经不能满足需求了
例如
create table Test2 (machine_no string,appinfo array<string>,event struct<key:string,seg:map<string,string>>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':' ;
hive> desc logTest;
OK
machine_no string
appinfo array<string>
event struct<key:string,seg:map<string,string>>
Time taken: 0.359 seconds, Fetched: 3 row(s)
导入的数据文本格式(我想到的有可能的三种数据格式,所以三条数据的类型不一样)
12345 appone1,apptwo1,appthree1 eventskeyone1,mapkey1:val1
56789 appone1,apptwo1,appthree2 eventskeyone1,mapkey1,val1:mapkey1,val1
8910JQ appone1,apptwo1,appthree3 eventskeyone1,tom1:tim1,green1:t1
查询结果
hive> select * from logTest;
OK
220123652154785412542 ["appone1","apptwo1","appthree1"] {"key":"eventskeyone1","seg":{"mapkey1":null,"val1":null}}
220123652154785412542 ["appone1","apptwo1","appthree2"] {"key":"eventskeyone1","seg":{"mapkey1":null}}
220123652154785412542 ["appone1","apptwo1","appthree3"] {"key":"eventskeyone1","seg":{"tom1":null,"tim1":null}}
我现在查询的结果map中的value 都是null
但是这种是不对的
那我应该怎么去定义上面表中的分隔符以及数据文本又是什么格式呢??
上面表中struct类型中的String 与map的key与value的分隔符需要怎么定义呢?
当多map中有多个键值对的时候又怎么分隔符呢?
ps:
另外这种array>>表数据的分隔符又怎么去定义呢?希望能给一点提示谢谢各位。
MAP KEYS TERMINATED BY :key value分隔符
FIELDS TERMINATED BY:字段与字段之间的分隔符
COLLECTION ITEMS TERMINATED BY:一个字段各个item的分隔符
但是 当我嵌套复杂结构类型 的数据的时候 可能这几种自定义分隔符已经不能满足需求了
例如
create table Test2 (machine_no string,appinfo array<string>,event struct<key:string,seg:map<string,string>>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':' ;
hive> desc logTest;
OK
machine_no string
appinfo array<string>
event struct<key:string,seg:map<string,string>>
Time taken: 0.359 seconds, Fetched: 3 row(s)
导入的数据文本格式(我想到的有可能的三种数据格式,所以三条数据的类型不一样)
12345 appone1,apptwo1,appthree1 eventskeyone1,mapkey1:val1
56789 appone1,apptwo1,appthree2 eventskeyone1,mapkey1,val1:mapkey1,val1
8910JQ appone1,apptwo1,appthree3 eventskeyone1,tom1:tim1,green1:t1
查询结果
hive> select * from logTest;
OK
220123652154785412542 ["appone1","apptwo1","appthree1"] {"key":"eventskeyone1","seg":{"mapkey1":null,"val1":null}}
220123652154785412542 ["appone1","apptwo1","appthree2"] {"key":"eventskeyone1","seg":{"mapkey1":null}}
220123652154785412542 ["appone1","apptwo1","appthree3"] {"key":"eventskeyone1","seg":{"tom1":null,"tim1":null}}
我现在查询的结果map中的value 都是null
但是这种是不对的
那我应该怎么去定义上面表中的分隔符以及数据文本又是什么格式呢??
上面表中struct类型中的String 与map的key与value的分隔符需要怎么定义呢?
当多map中有多个键值对的时候又怎么分隔符呢?
ps:
另外这种array>>表数据的分隔符又怎么去定义呢?希望能给一点提示谢谢各位。
...全文
相关推荐
0437-如何在Hive中使用Struct类型
本文档主要介绍了如何在Apache Hive中使用Struct类型来处理和存储复杂数据结构。Hive作为基于Hadoop的数据仓库工具,提供了丰富的数据类型支持,包括基本类型如整数、浮点数、字符串等,
快速学习-Hive 数据类型
本章节专注于快速学习Hive数据类型,分为两个主要部分:基本数据类型和集合数据类型。Hive中的String类型与数据库中的varchar类似,是一种可变长度字符串,理论上可以存储高达2GB的字符数,
hive 简明教程
Hive中的基本数据类型主要包括:- 基本数据类型:如INT、FLOAT、DOUBLE、STRING等。- 复杂数据类型:如ARRAY、MAP、STRUCT、UNION等。
hive中定义的复杂数据类型导入到es中问题总结.doc
#### 三、Hive 中的复杂数据类型Hive 支持多种复杂数据类型,如 array、map 和 struct 等。
Hive使用手册Hive使用手册
- **复杂数据类型** 包括:ARRAY、MAP、STRUCT和UNIONTYPE,它们可以存储结构化或半结构化的数据。


