Redshift Spectrum и Hive Metastore - неоднозначная ошибка

Из Redshift я создал внешнюю схему с помощью Hive Metastore. Я могу видеть метаданные Redshift о таблицах (например, используя: select * from SVV_EXTERNAL_TABLES), однако при запросе одной из этих таблиц я получаю неоднозначную ошибку «error: Assert»

Я попытался создать внешнюю схему и запросить таблицы. Я могу запросить метаданные о таблицах, но не могу запросить сами таблицы.

Я создал внешнюю схему следующим образом:

create external schema hive_schema
from hive metastore
database 'my_database_name'
uri 'my_ip_address' port 9083
iam_role 'arn:aws:iam::123456789:role/my_role_name';

Вот сообщение об ошибке при запуске "select * from hive_schema.my_table_name;"

  -----------------------------------------------
  error:  Assert
  code:      1000
  context:   loc->length() > 5 && loc->substr(0, 5) == "s3://" -
  query:     1764
  location:  scan_range_manager.cpp:221
  process:   padbmaster [pid=26902]
  -----------------------------------------------

person Eli Reiman    schedule 13.06.2019    source источник
comment
я полагаю, у вас неверная мета улья? он работает откуда-нибудь (улей / престо?) как вы его создали?   -  person Jon Scott    schedule 13.06.2019
comment
@JonScott - да, я могу успешно запрашивать таблицы из улья.   -  person Eli Reiman    schedule 13.06.2019


Ответы (1)


Что такое LOCATION в вашем столе Hive? Похоже, Redshift утверждает местоположение, чтобы начать с s3://.

Вы должны увидеть LOCATIONс ваших таблиц, выполнив этот запрос:

select location from SVV_EXTERNAL_TABLES

Где хранятся ваши таблицы Hive? Это может быть HDFS? Я сомневаюсь, что Redshift поддерживает какие-либо другие местоположения, кроме S3 - в разделе Рекомендации при использовании каталога данных AWS Glue в это руководство AWS, в котором описывается, как настроить Hive Metastore для хранения данных в S3.

person botchniaque    schedule 14.06.2019
comment
Замечательное наблюдение. Да, он был создан как таблица на основе HDFS. Я изменил это на ведро S3, которое избавило от ошибки, указанной выше, однако теперь у меня тайм-аут, хотя в настоящее время это крошечная таблица - только 1 строка и 1 столбец. Есть идеи, почему? `` ----------------------------------------------- ошибка: исключение запроса S3 (выборка), количество попыток превышено, код: 15001 контекст: истекло время ожидания запроса S3. запрос: 11397 расположение: dory_util.cpp: 913 процесс: query0_126_11397 [pid = 12636] -------------------------------- --------------- '' - person Eli Reiman; 14.06.2019
comment
Можете ли вы запросить его с помощью любого другого движка sql? Улей? Престо? - person botchniaque; 14.06.2019
comment
Поскольку данные находятся в s3, вы можете создать над ним внешнюю таблицу, используя каталог склейки (CREATE EXTERNAL SCHEMA my_schema FROM DATA CATALOG ..., а затем CREATE EXTERNAL TABLE my_schema.my_table() ... ) - просто чтобы проверить, есть ли проблема с этим сегментом. - person botchniaque; 14.06.2019