首页 > 解决方案 > 尽管有双引号,但当键是保留关键字时,AWS Athena 行转换失败

问题描述

我正在处理 AWS Athena 中的数据,并且正在尝试匹配一些输入数据的结构。这涉及一个嵌套结构,其中“from”是一个键。这始终会引发错误。

我已将问题缩小到当您尝试使用保留关键字作为行中的键时 Athena 查询不起作用的事实。以下示例演示了此行为。

  1. 这个简单的案例SELECT CAST(ROW(1) AS ROW("from" INTEGER))失败并出现以下错误:GENERIC_INTERNAL_ERROR: Unable to create class com.facebook.presto.execution.TaskInfo from JSON response: [io.airlift.jaxrs.JsonMapperParsingException: Invalid json for Java type

  2. 这个简单的案例运行成功:SELECT CAST(ROW(1) AS ROW("work" INTEGER))

Athena 文档说将保留关键字括在双引号中以在 SELECT 语句中使用它们,但上面的示例表明,当使用关键字作为行中的键时,查询仍然会失败。

我知道我还有其他选择,但这种方式是迄今为止最方便的。在这种情况下有没有办法使用保留关键字?

标签: prestoamazon-athena

解决方案


正如 Piotr 在评论中提到的,这是一个 Presto 错误,鉴于它是在几天前发布的,因此不太可能很快在 Athena 中修复。当在 Presto 中修复错误时,它可能会进入 Athena,我知道 Athena 团队有时会应用上游补丁,即使 Athena 是基于旧版本的 Presto。这可能不足以出现在他们的雷达上,但是如果您使用 AWS 开具支持票证,它可能会发生(请务必明确您不需要任何解决方法,只需报告错误,否则您将有支持人员花费太多时间试图帮助您关闭和重新打开事物)。


推荐阅读