【问题标题】:"Error parsing the type of column" Redshift Spectrum“解析列类型时出错”Redshift Spectrum
【发布时间】:2018-09-26 19:35:42
【问题描述】:

我有一个频谱用例,它使用来自 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 转换为镶木地板,并且在尝试查询嵌套数据时遇到了同样的问题。

这是胶水表定义:

这是演员结构:

【问题讨论】:

    标签: amazon-web-services amazon-redshift amazon-redshift-spectrum


    【解决方案1】:

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

    【讨论】:

    • 我遇到了同样的解析错误。我正在更新问题,并添加胶水表定义。
    【解决方案2】:

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

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

    学分@hyruma92

    【讨论】:

      猜你喜欢
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2019-09-03
      • 2023-03-24
      相关资源
      最近更新 更多