0

在 Redshift 中,我使用 Hive Metastore 创建了一个外部模式。我可以看到有关表的 Redshift 元数据(例如使用:select * from SVV_EXTERNAL_TABLES),但是在查询其中一个表时,我收到一个模棱两可的错误“错误:断言”

我尝试创建外部模式并查询表。我可以查询有关表的元数据,但实际上不能查询表本身。

我创建了如下外部模式:

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]
  -----------------------------------------------
4

1 回答 1

1

LOCATION的 Hive 表是什么?似乎 Redshift 正在断言以 .开头的位置s3://

您应该LOCATION通过运行该查询来查看您的表:

select location from SVV_EXTERNAL_TABLES

您的 Hive 表存储在哪里?可能是HDFS吗?我怀疑 Redshift 是否支持 S3 以外的任何其他位置 - 在本 AWS 指南的使用 AWS Glue 数据目录时的注意事项部分中,他们描述了如何设置 Hive Metastore 以在 S3 中存储数据。

于 2019-06-14T05:05:10.037 回答