我可以使用 Athena View 作为 AWS Glue 作业的来源吗?

Posted

技术标签:

【中文标题】我可以使用 Athena View 作为 AWS Glue 作业的来源吗?【英文标题】:Can I use Athena View as a source for a AWS Glue Job? 【发布时间】:2018-11-01 13:30:57 【问题描述】:

我正在尝试使用 Athena View 作为我的 AWS Glue 作业的数据源。我在尝试运行 Glue 作业时收到的错误消息是关于视图的分类。我可以将它定义为什么? 谢谢

Error Message Appearing

【问题讨论】:

目前我能找到的唯一解决方法是使用 Filter 类:docs.aws.amazon.com/glue/latest/dg/… 在我的例子中,我使用视图来过滤一些数据。 我在 AWS Glue 中找到了另一种使用 SQL 查询的方法:***.com/a/45824735/475876 【参考方案1】:

您可以使用Athena JDBC driver。这种方法绕过了目录,因为只有 Athena(而不是截至 2019 年 1 月 25 日的 Glue)可以直接访问视图。

    下载驱动程序并将 jar 存储到 S3 存储桶中。 在您的作业定义中将驱动程序的 S3 路径指定为 dependent jar。 使用以下代码将数据加载到动态框架中(使用 IAM 用户 permission to run Athena queries)。
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 键指定的存储桶中。

我不相信您可以通过 JDBC 创建到 Athena 的 Glue Connection,因为您无法指定驱动程序位置的 S3 路径。

归因:AWS 支持完全帮助我完成了这项工作。

【讨论】:

请注意,您可以将 us-east-1 替换为您的 Athena 视图所在的区域。 很好!!它真的帮助了我。谢谢

以上是关于我可以使用 Athena View 作为 AWS Glue 作业的来源吗?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Athena 无法将 .csv 整数转换为表值

如何获取输入文件名作为 AWS Athena 外部表中的列

AWS Athena JDBC查询超时

将数据从 Google Analytics 迁移到 AWS Athena

如何使用 ETL (AWS Glue) 聚合数据,以便我们可以使用 Athena 通过特定属性仅选择一部分数据

如何在 AWS Athena 中转换时区