Представления Афины Амазонки - фактически представления улья, или они - отдельный болт? - PullRequest
1 голос
/ 25 мая 2019

Амазонка Афина основана на Престо.Amazon Athena поддерживает представления.

Presto не поддерживает представления Hive, поскольку не хочет иметь дело с языком запросов Hive.Поскольку представление на самом деле является запросом Hive, оно должно понимать весь язык улья, а не только его схему. Presto поддерживает виды через разъем Hive.Эти виды являются «видами Presto», являются специфичными для Presto (не могут быть запрошены из Hive).

Поддерживает ли Athena виды Hive под обложками?Или Афины - это совершенно отдельный слой, который просто сохраняет именованные запросы Presto / Athena?

1 Ответ

1 голос
/ 28 мая 2019

Насколько я знаю, это взгляды Престо. Я изучил, как представления сохраняются в каталоге Glue, и поговорил с командой Athena о том, почему все сделано так, как есть. Я не эксперт в том, что делает представление Presto вместо представления Hive, но Афина ничего не делает поверх Presto, когда дело касается представлений.

Когда вы создаете представление в Афине, оно создает таблицу в Glue типа VIRTUAL_VIEW с TableInput.ViewOriginalText с очень специальной структурой (см. Ниже). Parameters также должен содержать presto_view: true.

Структура в TableInput.ViewOriginalText выглядит следующим образом /* Presto View: <BASE64 DATA> */, где полезной нагрузкой является структура JSON с кодировкой 64, которая описывает представление. Значение TableInput.ViewOriginalText производится Presto (см. https://github.com/prestosql/presto/blob/27a1b0e304be841055b461e2c00490dae4e30a4e/presto-hive/src/main/java/io/prestosql/plugin/hive/HiveUtil.java#L597-L600).

Если вопрос в том, могут ли виды, созданные в Афине, использоваться другими инструментами, которые подключаются к каталогу Glue, я думаю, что ответ - нет. То, как они кодируются, зависит от Presto.

...