我在AWS Athena中处理数据,并试图匹配一些输入数据的结构。这涉及嵌套结构;从";是一把钥匙。这总是会引发错误。
我已经将问题缩小到这样一个事实,即当您尝试使用保留关键字作为行中的键时,Athena查询不起作用。以下示例演示了这种行为。
-
这个简单的案例
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
-
这个简单的案例成功运行:
SELECT CAST(ROW(1) AS ROW("work" INTEGER))
Athena文档说,要在SELECT语句中使用保留的关键字,就要用双引号括起来,但上面的例子表明,当在行中使用关键字作为关键字时,查询仍然会失败。
我知道我还有其他选择,但这种方式是迄今为止最方便的。有没有办法在这种情况下使用保留关键字?
正如Piotr在评论中提到的,这是一个Presto错误,鉴于它是几天前发布的,不太可能很快在Athena中修复。当这个bug在Presto中修复后,它可能会进入Athena,我知道Athena团队有时会应用上游补丁,尽管Athena是基于旧版本的Presto。这一点可能不够重要,不足以出现在他们的雷达上,但如果你向AWS打开支持票证,它可能会发生(请确保,你不需要任何变通方法,只需报告一个错误,否则你会让支持人员花太多时间试图帮你关闭和打开它(。