通过 AWS Glue Python 脚本连接到 Postgres

rix*_*rix 5 aws-glue

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

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

提前致谢,

Har*_*fna 8

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

第一个选项

  • 在 RDS 顶部创建粘合连接
  • 在第一步中创建的胶水连接之上创建一个胶水爬行器
  • 运行爬网程序以使用指向 RDS 表的数据库和表填充glue 目录。
  • 使用glue目录中新创建的数据库和表在glue 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}}")
Run Code Online (Sandbox Code Playgroud)

第二个选项

使用 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)
Run Code Online (Sandbox Code Playgroud)

笔记 :

  • 您将需要传递 postgres jdbc jar 来使用 Spark sql 创建数据库。
  • 我在glue etl上尝试了第一种方法,在python shell(dev-endpoint)上尝试了第二种方法