首页 > 解决方案 > “解析列类型时出错”Redshift Spectrum

问题描述

我有一个频谱用例,它使用来自 s3 的大量 json 文件。我首先使用 Glue 爬虫来爬取数据以创建数据目录。然后使用该目录,我创建了一个外部模式来引用 Glue 数据库,以便我可以访问该目录。现在我可以在根级字符串上执行选择语句,它可以工作 例如:

select t.id from glue_db.test t

问题是,当我对结构对象执行选择语句时,我收到此错误“解析列't.actor.name'的类型时出错”。这是一个示例选择(id 是 actor 结构中的一个字符串):

select t.actor.name from glue_db.test t

我错过了什么?我还尝试将 json 转换为镶木地板,并且在尝试查询嵌套数据时遇到了同样的问题。

这是胶水表def:

在此处输入图像描述

这是演员结构:

在此处输入图像描述

标签: amazon-web-servicesamazon-redshiftamazon-redshift-spectrum

解决方案


需要在 FROM 子句中指定包含嵌套值的属性,以便 Redshift 知道如何访问它们。还需要确认 Glue 生成的目录正确指定了表。

select a.id 
from glue_db.test t, t.actor a

有关使用 Redshift Spectrum 查询嵌套数据的帮助,请参阅本教程。https://docs.aws.amazon.com/redshift/latest/dg/tutorial-query-nested-data-sqlextensions.html


推荐阅读