hive 嵌套复杂类型数据(map,array.struct)的时候自定义分隔符的问题

[复制链接]
查看11 | 回复1 | 2021-1-27 05:40:48 | 显示全部楼层 |阅读模式
目前我一只的自定义的分隔符种类
MAPKEYSTERMINATEDBY:keyvalue分隔符
FIELDSTERMINATEDBY:字段与字段之间的分隔符
COLLECTIONITEMSTERMINATEDBY:一个字段各个item的分隔符
但是当我嵌套复杂结构类型的数据的时候可能这几种自定义分隔符已经不能满足需求了
例如
createtableTest2(machine_nostring,appinfoarray,eventstruct>)
ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'
COLLECTIONITEMSTERMINATEDBY','
MAPKEYSTERMINATEDBY':';
hive>desclogTest;
OK
machine_nostring
appinfoarray
eventstruct>
Timetaken:0.359seconds,Fetched:3row(s)
导入的数据文本格式(我想到的有可能的三种数据格式,所以三条数据的类型不一样)
12345appone1,apptwo1,appthree1eventskeyone1,mapkey1:val1
56789appone1,apptwo1,appthree2eventskeyone1,mapkey1,val1:mapkey1,val1
8910JQappone1,apptwo1,appthree3eventskeyone1,tom1:tim1,green1:t1
查询结果
hive>select*fromlogTest;
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>>表数据的分隔符又怎么去定义呢?希望能给一点提示谢谢各位。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:40:48 | 显示全部楼层

FIELDSTERMINATEDBY'\t'---------->
COLLECTIONITEMSTERMINATEDBY',';--->这里是指定map,或者array,struct的分隔符.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行