我正在尝试使用嵌套的Collection项创建一个hive表。假设我有一个struct数组。
CREATE TABLE SAMPLE(
record array<struct<col1:string,col2:string>>
)row format delimited
fields terminated by ','
collection items terminated by '|';
第一级,分隔符','将覆盖默认分隔符'^ A'。
第二级,分隔符'|'将覆盖默认的第二级分隔符'^ B'以分离出最外层的结构(即数组)。
三级配置单元将使用默认的第三级分隔符'^ C'作为Struct的分隔符
现在我的问题是我如何为第二级(即Struct)定义分隔符,因为'^ C'字符难以阅读以及生成。
有没有办法明确定义分隔符而不是^ C?
提前致谢。
答案 0 :(得分:14)
尝试这样的事情:
CREATE TABLE SAMPLE(
id BIGINT,
record array<struct<col1:string,col2:string>>
)row format delimited
fields terminated by ','
collection items terminated by '|'
map keys terminated by ':';
现在,您在文本文件中的数据将如下所示:
1345653,110909316904:1341894546|221065796761:1341887508
然后您可以查询它:
select record.col1 from SAMPLE;