1

我正在使用这个查询

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<

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

任何帮助表示赞赏!

4

3 回答 3

1

我会说这可能是由这一点引起的:

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

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

于 2019-06-20T23:10:06.297 回答
1

约翰的回答给出了一个重要的提示,这段代码有效


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'会产生语法错误。

于 2019-06-21T08:11:43.390 回答
-1

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

编辑:普通Redshift 不支持结构。Redshift Spectrum 可以。

于 2019-06-20T17:57:41.783 回答