2013-08-02 3 views
6

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

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

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

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

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

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

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

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

ответ

10

попробовать что-то вроде этого:

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; 
+0

хороший ответ Мукеш – saching

Смежные вопросы