【问题标题】:Mismatched input error when creating Athena table创建 Athena 表时输入不匹配错误
【发布时间】:2022-07-10 02:06:33
【问题描述】:

得到以下错误,

line 1:8: mismatched input 'EXTERNAL'. Expecting: 'OR', 'SCHEMA', 'TABLE', 'VIEW'

使用以下命令创建 Athena 表时,

CREATE EXTERNAL TABLE IF NOT EXISTS 'abcd_123' (Item:struct<Id:struct<S:string>>)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ('ignore.malformed.json' = 'true')
LOCATION 's3://mybucket'

我已经完成了其他问答,但没有一个答案对我有帮助 - 关于错误可能在这里的任何点?

【问题讨论】:

  • 如何执行?查询看起来不错。
  • 尝试在该 s3 存储桶位置运行爬虫来填充表结构,而不是手动创建它。

标签: amazon-web-services amazon-s3 amazon-athena


【解决方案1】:

尝试在 Item 和 struct 之间放置一个空格而不是冒号,像这样

CREATE EXTERNAL TABLE IF NOT EXISTS 'abcd_123' (
    Item struct<
        Id:struct<
            S:string
        >
    >
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ('ignore.malformed.json' = 'true')
LOCATION 's3://mybucket'

这取自the AWS Athena docs。我相信冒号仅在结构字段及其类型之间需要,而不是列名及其类型。

CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
    `Date` Date,
    Time STRING,
    Location STRING,
    Bytes INT,
    RequestIP STRING,
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2012-07-01
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多