Каков наилучший способ поддержки типов столбцов массива с внешними таблицами в кусте? - PullRequest
4 голосов
/ 07 июня 2011

Так что у меня есть внешние таблицы данных с разделителями табуляции.Простая таблица выглядит следующим образом:

create external table if not exists categories
(id string, tag string, legid string, image string, parent string, created_date string, time_stamp int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION 's3n://somewhere/';

Теперь я добавляю еще одно поле в конец, это будет список значений, разделенных запятыми.

Есть ли способ указать это так же, как я указываю терминатор поля, или я должен полагаться на один из serdes?

например:

...list_of_names ARRAY<String>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ARRAY ELEMENTS SEPARATED BY ','
...

(я предполагаю, что мне нужно будет использовать serde для этого, но я решил, что спрашивать не было никакого вреда)

1 Ответ

5 голосов
/ 08 июня 2011

Я не знаю, как обновить существующую таблицу, чтобы сделать это, но для создания таблицы; то, что вы ищете, можно найти в глубине https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL. Отрывок оттуда

row_format
  : DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]
        [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]

Пример нашего создания таблицы:

CREATE TABLE IF NOT EXISTS visits
(
    ... Columns Removed...
)
    PARTITIONED BY (userdate STRING)
    ROW FORMAT DELIMITED
        FIELDS TERMINATED BY '\001'
        COLLECTION ITEMS TERMINATED BY '\002'
        MAP KEYS TERMINATED BY '\003'
    STORED AS TEXTFILE
;

Строка, которую вы ищете, это COLLECTION ITEMS TERMINATED BY char для массива.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...