4

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

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

Athena 是否支持隐藏的 Hive 视图?还是 Athena 视图是一个完全独立的层/螺栓连接,它只保存命名的 Presto/Athena 查询?

4

1 回答 1

3

据我所知,它们是 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 的。

于 2019-05-28T17:00:55.983 回答