在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]
-----------------------------------------------
答案 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中。