Redshift Spectrum和Hive Metastore-模棱两可的错误

时间:2019-06-13 04:39:51

标签: hive amazon-redshift amazon-redshift-spectrum hive-metastore

在Redshift中,我使用Hive Metastore创建了一个外部模式。我可以看到有关表的Redshift元数据(例如使用:从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 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 个答案:

答案 0 :(得分:1)

您的Hive表中的LOCATION是什么?好像Redshift是断言s3://开头的位置。

通过运行该查询,您应该看到LOCATION个表:

select location from SVV_EXTERNAL_TABLES

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