【问题标题】:Redshift Spectrum gives syntax error on creating nested dataRedshift Spectrum 在创建嵌套数据时出现语法错误
【发布时间】:2019-06-20 16:20:54
【问题描述】:

我正在使用这个查询

CREATE EXTERNAL TABLE test.post(
      edge_media_to_tagged_user struct<
            "edges": array<
            "node": struct<
                "user": struct<
                  id:bigint,
                  username:text
                >,
                x: float(24),
                y: float(24)
            >
        >
      >
  )
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucket/test';

不知何故,上面的查询给了我

ERROR:  syntax error at or near ":"
LINE 4:             "node": struct<

删除或添加冒号和/或双引号仍然会给我错误。

感谢任何帮助!

【问题讨论】:

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


    【解决方案1】:

    我会说这可能是由这个位引起的:

            "edges": array<
            "node": struct<
    

    数组不包含命名项,因此当它在array 定义中发现"node": 时可能会失败。

    【讨论】:

      【解决方案2】:

      Answer from John 给出一个重要提示,此代码有效

      
      CREATE EXTERNAL TABLE likes_schema_test.post88(
            edge_media_to_tagged_user struct<
              "edges": array<struct<      <-- change here
                  "node": struct<
                      "user": struct<
                        full_name:text,
                        id:bigint,
                        is_verified: boolean,
                        username:text
                      >,
                      x: float(24),
                      y: float(24)
                  >>
              >
            >
        )
      ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
      LOCATION 's3://follower-dumper-testing/post_test';
      

      将"node" 更改为'node' 会产生语法错误。

      【讨论】:

        【解决方案3】:

        不幸的是,Redshift 不支持 struct 数据类型。 Redshift 支持的数据类型的完整列表可以在here 找到。

        编辑:正常 Redshift 不支持结构。 Redshift Spectrum 可以。

        【讨论】:

        • Redshift Spectrum 可以,根据docs.aws.amazon.com/redshift/latest/dg/…
        • 啊,我明白了。看起来这个链接说 Redshift 支持单引号,而不是双引号:docs.aws.amazon.com/redshift/latest/dg/…
        • 我刚刚了解到单引号是用于LOCATION 和ROW FORMAT,详情请参阅我的回答
        • 很高兴你能成功。感谢您向我介绍 Spectrum,这是我第一次听说它!
        • 不客气!请注意,Redshift 和 Redshift Spectrum 之间存在差异。一个是云中的 Postgres 版本,一个是从 S3 解析 JSON 的工具。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-12
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-31
        • 2018-06-14
        相关资源
        最近更新 更多