【发布时间】:2017-04-16 04:14:06
【问题描述】:
在 Athena 中创建表时;它给了我以下异常:
输入没有可行的替代方案
【问题讨论】:
-
在我的例子中,表名不能从数字开始,它必须是字母。
标签: amazon-web-services amazon-athena
在 Athena 中创建表时;它给了我以下异常:
输入没有可行的替代方案
【问题讨论】:
标签: amazon-web-services amazon-athena
在这里搜索并关注所有好的答案后。 我的问题是在 Node.js 中工作我需要删除可选的 ESCAPED BY '\' 在行设置中使用以使我的查询正常工作。希望这对其他人有所帮助。
【讨论】:
不幸的是,目前 Athena 中的语法验证错误消息的描述性不是很好,这个错误可能意味着“几乎”任何可能在 create table 语句中出现的语法错误。
虽然目前这很烦人,但您需要检查语法是否遵循Create table documentation
一些例子是:
【讨论】:
>。
正如其他用户所指出的,Athena 提供的标准语法验证错误消息并不是特别有用。彻底检查其他用户提到的所需 DDL 语法(请参阅 HIVE data types reference)可能非常乏味,因为它相当广泛。
因此,另一个故障排除技巧是让 AWS 自己的数据解析引擎 (AWS Glue) 提示您 DDL 可能在哪里关闭。这里的想法是让 AWS Glue 使用自己的内部规则解析数据,然后向您展示您可能在哪里犯了错误。
具体来说,以下是对我的 DDL 语句进行故障排除的步骤,这给我带来了很多麻烦:
【讨论】:
由于查询中有 cmets,这发生在我身上。
当我尝试“格式化查询”按钮时,我意识到这是一种可能性,它把整个事情变成了几乎 1 行,大部分都被注释掉了。我的猜测是查询解析器会在将查询发送到 Athena 之前运行此格式化程序。
移除 cmets,运行查询,天使长出了翅膀!
【讨论】:
第一次使用 UI 时对我来说并不明显的是,如果您在创建表“向导”中遇到错误,您可以取消,并且应该有使用的查询失败写入新的查询窗口,供您编辑和修复。
我的数据库有一个连字符,所以我在查询中添加了反引号并重新运行它。
【讨论】:
斜线。我的是斜线。我有来自 Athena 的 DDL,保存为 python 字符串。
WITH SERDEPROPERTIES (
'escapeChar'='\\',
'quoteChar'='\"',
'separatorChar'=',')
改为
WITH SERDEPROPERTIES (
'escapeChar'='\',
'quoteChar'='"',
'separatorChar'=',')
一切都崩溃了。
必须成功:
WITH SERDEPROPERTIES (
'escapeChar'='\\\\',
'quoteChar'='\\\"',
'separatorChar'=',')
【讨论】:
我的情况:这是一个外部表,位置有错字(因此不存在)
几个提示:
【讨论】:
这个错误一般发生在DDL的语法有一些愚蠢的错误时。有几个答案可以根据那里的状态解释不同的错误。解决这个问题的简单方法是耐心查看DDL和逐行验证以下几点:-
【讨论】:
就我而言,根据 AWS 文档,其中一个表列名称用单引号括起来:( ('bucket')
【讨论】:
在我的情况下,这是因为表中最后一列后面的逗号。例如:
CREATE EXTERNAL TABLE IF NOT EXISTS my_table (
one STRING,
two STRING,
) LOCATION 's3://my-bucket/some/path';
在我删除two STRING, 末尾的逗号后,它工作正常。
【讨论】:
就我而言,我缺少 S3 URL 的单引号
【讨论】:
在我的例子中,它是 PARTITIONED BY 部分中的一个额外逗号,
【讨论】:
表名中不允许使用连字符..(尽管向导允许)..只需删除连字符,它就像一个魅力
【讨论】:
2017_04_03_some_data。我改成some_data_20170403,它成功了。
'-'
) 最后丢失了。 :)