如何在Hive中定义嵌套的收集项

时间:2013-08-02 07:32:00

标签: nested hive

我正在尝试使用嵌套的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?

提前致谢。

1 个答案:

答案 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;