1

我有一个频谱用例,它使用来自 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:

在此处输入图像描述

这是演员结构:

在此处输入图像描述

4

2 回答 2

0

需要在 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

于 2018-09-27T18:21:05.823 回答
0

我遇到了完全相同的错误,在与 AWS Support 取得联系后,我发现字段名称中的反斜杠 (\) 字符会导致这个确切的异常,在您的情况下是字段bb\user.idbb\user.externalId.

所以对我来说,编辑架构并临时删除包含“\”的字段或重命名删除反斜杠的字段(例如bbuser.id)解决了这个问题。

在此处输入图像描述

学分@ hyruma92

于 2020-09-04T09:35:47.370 回答