Могу ли я использовать Athena View в качестве источника для работы с клеем AWS? - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь использовать Athena View в качестве источника данных для моей работы AWS Glue. Сообщение об ошибке, которое я получаю при попытке запустить задание Glue, касается классификации представления. Что я могу определить как? Спасибо

Появляется сообщение об ошибке

1 Ответ

0 голосов
/ 25 января 2019

Вы можете использовать драйвер Athena JDBC . Этот подход обходит каталог, так как только Афина (а не клей по состоянию на 25 января 2019 года) может напрямую обращаться к представлениям.

  1. Загрузите драйвер и сохраните банку в ведро S3.
  2. Укажите путь S3 к драйверу как зависимый jar в определении задания.
  3. Загрузить данные в динамический фрейм, используя код ниже (используя пользователя IAM с разрешением на выполнение запросов Athena ).
from awsglue.dynamicframe import DynamicFrame
# ...
athena_view_dataframe = (
    glueContext.read.format("jdbc")
    .option("user", "[IAM user access key]")
    .option("password", "[IAM user secret access key]")
    .option("driver", "com.simba.athena.jdbc.Driver")
    .option("url", "jdbc:awsathena://athena.us-east-1.amazonaws.com:443")
    .option("dbtable", "my_database.my_athena_view")
    .option("S3OutputLocation","s3://bucket/temp/folder") # CSVs/metadata dumped here on load
    .load()
    )

athena_view_datasource = DynamicFrame.fromDF(athena_view_dataframe, glueContext, "athena_view_source")

Документация на драйвер ( pdf ) предоставляет альтернативы аутентификации пользователя IAM (например, SAML, пользовательский поставщик).

Основным побочным эффектом этого подхода является то, что загрузка приводит к выводу результатов запроса в формате CSV в корзину, указанную с помощью клавиши S3OutputLocation.

Я не верю, что вы можете создать Glue Connection с Афиной через JDBC, потому что вы не можете указать S3-путь к расположению драйвера.

Атрибуция: поддержка AWS полностью помогла мне получить эту работу.

...