首页 > 解决方案 > 通过 AWS Glue Python 脚本连接到 Postgres

问题描述

通过 AWS Glue 文档,我看不到任何关于如何通过“Python shell”类型的 Glue 作业连接到 Postgres RDS 的内容。我已经在 AWS Glue 中设置了 RDS 连接并验证我可以连接到我的 RDS。此外,在创建 Python 作业时,我可以看到我的连接并将其添加到脚本中。

如何使用添加到 Glue 作业的连接来运行一些原始 SQL?

提前致谢,

标签: aws-glue

解决方案


在glue etl(spark)中有两种可能的方式从RDS访问数据:

第一个选项

  • 在 RDS 之上创建粘合连接
  • 在第一步创建的胶水连接之上创建胶水爬行器
  • 运行爬网程序以使用指向 RDS 表的数据库和表填充粘合目录。
  • 使用胶水目录中新创建的数据库和表在胶水 etl 中创建动态框架。

代码示例:

from pyspark.context import SparkContext
from awsglue.context import GlueContext
glueContext = GlueContext(SparkContext.getOrCreate())
DyF = glueContext.create_dynamic_frame.from_catalog(database="{{database}}", table_name="{{table_name}}")

第二个选项

使用 spark sql 创建数据框:

url = "jdbc:postgresql://<rds_host_name>/<database_name>"
properties = {
"user" : "<username>",
"password" : "<password>"
}
df = spark.read.jdbc(url=url, table="<schema.table>", properties=properties)

笔记 :

  • 您需要通过 postgres jdbc jar 来使用 spark sql 创建数据库。
  • 我在胶水 etl 上尝试了第一种方法,在 python shell (dev-endpoint) 上尝试了第二种方法

推荐阅读