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

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

Error Message Appearing

【问题讨论】:

标签: amazon-web-services jobs amazon-athena aws-glue


【解决方案1】:

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

  1. 下载驱动程序并将 jar 存储到 S3 存储桶中。
  2. 在您的作业定义中将驱动程序的 S3 路径指定为 dependent jar
  3. 使用以下代码将数据加载到动态框架中(使用 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 视图所在的区域。
  • 很好!!它真的帮助了我。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
  • 2018-08-05
  • 1970-01-01
  • 2020-06-27
  • 2023-02-07
  • 1970-01-01
相关资源
最近更新 更多