Как определить вложенные элементы коллекции в 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;