Amazon Athena 视图实际上是蜂巢视图,还是一个单独的附加组件?

Are Amazon Athena views actually hive views, or are they a separate bolt-on?

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

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

Athena 是否支持隐藏的 Hive 视图?还是 Athena 视图是一个完全独立的 layer/bolt-on,只保存命名的 Presto/Athena 查询?

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

当您在 Athena 中创建视图时,它会在类型为 VIRTUAL_VIEW 的 Glue 中创建一个 table,并且 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-specific.