我可以将Athena View用作AWS Glue Job的来源吗?

时间:2018-11-01 13:30:57

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

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

Error Message Appearing

1 个答案:

答案 0 :(得分:2)

您可以使用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支持完全帮助我完成了这项工作。