输入“EXTERNAL”不匹配。预期:“OR”、“SCHEMA”、“TABLE”、“VIEW”

问题描述 投票:0回答:5

我正在尝试使用以下命令在 AWS Athena 中创建一个表。但是我收到错误:输入“外部”不匹配。预期:“OR”、“SCHEMA”、“TABLE”、“VIEW”

你能帮忙吗?

    CREATE EXTERNAL TABLE IF NOT EXISTS 'transport_evaluator_prod' (
    `messageId` STRING,
    `type` STRING,
    `causationId` STRING,
    `correlationId` STRING,
    `traceparent` STRING,
    `data` STRUCT<
    `evaluationOccurred`:STRING,
`eta`:STRUCT<
    `distance`:INT,
`timeToDestination`:INT,
`eta`:STRING,
`destination`:STRUCT<
    `latitude`:DOUBLE,
`longitude`:DOUBLE,
`altitude`:DOUBLE>,
`destinationEventId`:STRING,
`origin`:STRUCT<
    `latitude`:DOUBLE,
`longitude`:DOUBLE,
`altitude`:DOUBLE>,
`originEventId`:STRING,
`plannedArrival`:STRING,
`locationActionReference`:STRING,
`resourceUrn`:STRING,
`eventProvider`:STRING,
`occured`:STRING,
`position`:STRUCT<
    `latitude`:DOUBLE,
`longitude`:DOUBLE,
`altitude`:DOUBLE>,
`equipmentNumber`:STRING,
`received`:STRING>>)
ROW FORMAT SERDE 
     'org.openx.data.jsonserde.JsonSerDe'
LOCATION
     'for-security-pointing-to-folder'
amazon-athena
5个回答
1
投票

尝试删除表名中的引号:

    CREATE EXTERNAL TABLE IF NOT EXISTS transport_evaluator_prod (
    `messageId` STRING,
    `type` STRING,
...

0
投票

我提供我所做的更改,以便使其能够为下一个人可能遇到类似问题的人工作

  1. 我删除了表列的所有引号以及“数据”结构内的内部属性。
  2. 还要注意“struct”下的所有属性都后面跟着“:”
  3. 确保提供的类型与有效负载 json 的类型匹配

0
投票

我也遇到过同样的问题,但就我而言,问题出在我的数据库名称上。当我输入正确的名称时,查询就会起作用。

类似:

CREATE EXTERNAL TABLE IF NOT EXISTS 'correct_db_name'.'transport_evaluator_prod'
   ...

0
投票

这只是一条错误的错误消息,表明查询中某处存在问题,导致失败,但没有生成更具体的消息。就像您必须调试一个查询一样,通过简化查询直到它通过,然后一次添加一行,直到您看到哪一行导致了问题。


0
投票

当我的表名称包含

-
字符时(我使用存储桶名称作为表名称的一部分),我收到此错误消息。当我将它们替换为
_
字符时,表格创建得很好。

© www.soinside.com 2019 - 2024. All rights reserved.