通过AWS Glue Python脚本连接到Postgres

时间:2019-05-03 16:03:04

标签: aws-glue

遍历AWS Glue文档,我看不到有关如何通过“ Python shell”类型的Glue作业连接到Postgres RDS的任何提及。我已经在AWS Glue中设置了RDS连接,并确认可以连接到RDS。另外,在创建Python作业时,我可以看到我的连接并将其添加到脚本中。

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

预先感谢

1 个答案:

答案 0 :(得分:0)

有2种可能的方法可以通过胶水etl(火花)从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)上的第二种方法