Получить следующий элемент структуры из массива в HIve - PullRequest
0 голосов
/ 17 мая 2018

У меня есть таблица с полем типа Array of Structures:

CREATE TABLE complex_types(
   key int, 
   value ARRAY<STRUCT<status:string,method:string>>
);

INSERT INTO TABLE complex_types
SELECT row_number() over () as key,
  ARRAY(
     named_struct('status', 'OK', 'method', 'Method 1'),
     named_struct('status', 'Error', 'method', 'Method 2'),
     named_struct('status', 'Failed', 'method', 'Method 3')
  ) as value
FROM some_table LIMIT 10

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

select key, value[0], value[1] from complex_types

Результат равен

key _c1 _c2
1   {"status":"OK","method":"Method 1"} {"status":"Error","method":"Method 2"}
2   {"status":"OK","method":"Method 1"} {"status":"Error","method":"Method 2"}
3   {"status":"OK","method":"Method 1"} {"status":"Error","method":"Method 2"}

Но если я укажу ключ для элемента структуры, он возвращает значение из последнего элемента:

select key, value[0].method, value[1].method from complex_types

, а результат равен

key _c1 _c2
1   Method 2    Method 2
2   Method 2    Method 2
3   Method 2    Method 2

Спасибо

1 Ответ

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

Обновление Похоже, что проблема присутствует только в HDP Ambari Hive View 2.0.Запрос отлично работает в консоли Hive и в Ambari Hive View 1-й версии.

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