Redshift Spectrum и Hive Metastore - неоднозначная ошибка - PullRequest
0 голосов
/ 13 июня 2019

Из 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]
  -----------------------------------------------

1 Ответ

1 голос
/ 14 июня 2019

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

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

select location from SVV_EXTERNAL_TABLES

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

...