Amazon Athena 视图实际上是 Hive 视图,还是单独的附加视图?

Joh*_*0te 5 amazon-web-services presto amazon-athena trino

Amazon Athena 基于 Presto。Amazon Athena 支持视图。

Presto 不支持 Hive 视图,因为它不想处理 Hive 查询语言。由于视图实际上是 Hive 查询,因此它必须理解 Hive 的整个语言而不仅仅是其模式。Presto通过其 Hive 连接器支持视图。这些视图是“Presto 视图”,是 Presto 特定的(无法从 Hive 查询)。

Athena 是否支持 Hive 视图?或者 Athena 视图是一个完全独立的层/附加层,仅保存命名的 Presto/Athena 查询?

The*_*heo 4

据我所知,它们是 Presto 视图。我深入研究了视图在 Glue 目录中的保存方式,并与 Athena 团队讨论了为什么这样做。我不是 Presto 视图与 Hive 视图的专家,但在视图方面,Athena 并没有在 Presto 之上做任何事情。

当您在 Athena 中创建视图时,它会在 Glue 中创建一个类型为 的表VIRTUAL_VIEW,并且具有TableInput.ViewOriginalText非常特殊的结构(见下文)。Parameters还需要包含presto_view: true.

中的结构TableInput.ViewOriginalText如下所示/* Presto View: <BASE64 DATA> */,其中有效负载是描述视图的 Base 64 编码 JSON 结构。的值TableInput.ViewOriginalText由 Presto 生成(请参阅https://github.com/prestosql/presto/blob/27a1b0e304be841055b461e2c00490dae4e30a4e/presto-hive/src/main/java/io/prestosql/plugin/hive/HiveUtil.java#L597-L600) 。

如果问题是在 Athena 中创建的视图是否可以被连接到 Glue 目录的其他工具使用,我认为答案是否定的。它们的编码方式是 Presto 特定的。