Как вставить данные в сложный тип данных «Структура» в Hive 2 - PullRequest
0 голосов
/ 31 мая 2018

Это структура таблицы

CREATE TABLE warehouse (
 time timestamp, 
 person struct<id : int, name: string, organization : string>, 
 activity struct<id : int, name: string>, 
 case struct<id : int, name: string, organization : string>
);

Таблица создана без проблем, проблема в том, как вставить данные в эту таблицу.Я пробовал что-то подобное, но это не работает

INSERT INTO TABLE warehouse VALUES('2018-05-31'),
SELECT NAMED_STRUCT('id', 1, 'name', 'Alex', 'organization', 'CITI') AS person,
SELECT NAMED_STRUCT('id', 1, 'name', 'Buy') AS activity,
SELECT NAMED_STRUCT('id', 1, 'name', 'Gold', 'organization', 'London') AS case
FROM case 

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

1 Ответ

0 голосов
/ 31 мая 2018

вы не можете использовать NAMED_STRUCT в операторе INSERT с VALUES (более того, вы не можете использовать любые udf-файлы, вставляемые со значениями).Это обходной рабочий пример.

CREATE TABLE warehouse (
 time timestamp, 
 person struct<id : int, name: string, organization : string>, 
 activity struct<id : int, name: string>, 
 `case` struct<id : int, name: string, organization : string>
);


INSERT INTO TABLE warehouse
select 
'2018-05-31',
NAMED_STRUCT('id', 1, 'name', 'Alex', 'organization', 'CITI'),
NAMED_STRUCT('id', 1, 'name', 'Buy'),
NAMED_STRUCT('id', 1, 'name', 'Gold', 'organization', 'London') 
FROM (
select '1'
) t 
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...