Redshift Spectrum 和 Hive Metastore - 模棱两可的错误
Posted
技术标签:
【中文标题】Redshift Spectrum 和 Hive Metastore - 模棱两可的错误【英文标题】:Redshift Spectrum and Hive Metastore - Ambiguous Error 【发布时间】:2019-06-13 04:39:51 【问题描述】:在 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]
-----------------------------------------------
【问题讨论】:
我猜你的蜂巢元数据不正确?它可以在其他地方工作吗(hive/presto?)你是如何创建它的? @JonScott - 是的,我可以从 hive 成功查询表。 【参考方案1】:Hive 表的LOCATION
是什么?似乎 Redshift 是断言以s3://
开头的位置。
通过运行该查询,您应该会看到 LOCATION
s 的表:
select location from SVV_EXTERNAL_TABLES
您的 Hive 表存储在哪里?可能是HDFS吗?我怀疑 Redshift 是否支持 S3 以外的任何其他位置 - 在 this AWS guide 的 使用 AWS Glue 数据目录时的注意事项 部分中,他们描述了如何设置 Hive Metastore 以在 S3 中存储数据。
【讨论】:
很棒的观察。是的,它是作为基于 HDFS 的表创建的。我将其更改为 S3 存储桶,它消除了上面列出的错误,但是我现在遇到了超时,即使这当前是一个很小的表——只有 1 行和 1 列。任何想法为什么? ``` -----------------------------------------------错误:S3 查询异常(获取),重试超出代码:15001 上下文:S3 请求超时。查询:11397 位置:dory_util.cpp:913 进程:query0_126_11397 [pid=12636] -------------------------------- --------------- ``` 你能用其他的sql引擎查询吗?蜂巢?快吗? 由于数据在 s3 中,您可以使用粘合目录(CREATE EXTERNAL SCHEMA my_schema FROM DATA CATALOG ...
然后CREATE EXTERNAL TABLE my_schema.my_table() ...
)在其上创建一个外部表 - 只是为了测试这个存储桶是否有问题。以上是关于Redshift Spectrum 和 Hive Metastore - 模棱两可的错误的主要内容,如果未能解决你的问题,请参考以下文章