尽管有双引号,但当键是保留关键字时,AWS Athena 行转换失败

AWS Athena row cast fails when key is a reserved keyword despite double quotes

我正在 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 语句中使用它们,但上面的示例表明在使用关键字作为行中的键时查询仍然会失败。

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

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