9

我正在尝试使用嵌套的 Collection 项创建一个配置单元表。假设我有一个结构数组。

    CREATE TABLE SAMPLE(
    record array<struct<col1:string,col2:string>>
    )row format delimited
    fields terminated by ','
    collection items terminated by '|';

第一级,分隔符 ',' 将覆盖默认分隔符 '^A'。

第二级,分隔符'|' 将覆盖默认的二级分隔符“^B”以分离出最外层的结构(即数组)。

三级 hive 将使用默认的三级分隔符 '^C' 作为 Struct 的分隔符

现在我的问题是如何为第二级(即结构)定义分隔符,因为'^C' 字符很难阅读和生成。

有没有办法明确定义分隔符而不是 ^C ?

提前致谢。

4

1 回答 1

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;
于 2013-08-02T10:04:42.490 回答