Как определить вложенные элементы коллекции в Hive

Я пытаюсь создать таблицу улья с вложенными элементами коллекции. Предположим у меня есть массив структур.

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

первый уровень, разделитель', ' переопределит разделитель по умолчанию '^A'.

второй уровень, разделитель " | "переопределит разделитель второго уровня по умолчанию "^B", чтобы отделить внешнюю структуру most (т. е. массив).

улей третьего уровня будет использовать разделитель третьего уровня по умолчанию '^C ' в качестве разделителя для Struct

теперь мой вопрос в том, как я могу определить разделитель для второго уровня (т. е. структуры), потому что символ "^C " трудно читать, а также генерировать.

есть ли способ явно определить разделитель вместо ^C ?

спасибо заранее.

1 ответов


попробуйте что-то вроде этого:

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;