通过 AWS Glue Python 脚本连接到 Postgres
Connect to Postgres via AWS Glue Python script
通过 AWS Glue 文档,我看不到任何关于如何通过 "Python shell" 类型的 Glue 作业连接到 Postgres RDS 的提及。我已在 AWS Glue 中设置 RDS 连接并验证我可以连接到我的 RDS。此外,在创建 Python 作业时,我可以看到我的连接并将其添加到脚本中。
如何使用添加到 Glue 作业的连接到 运行 一些原始 SQL?
提前致谢,
在 glue etl (spark) 中有 2 种可能的方法从 RDS 访问数据:
第一个选项:
- 在 RDS 之上创建粘合连接
- 在第一步创建的胶水连接之上创建一个胶水爬虫
- 运行 爬虫用数据库和指向 RDS tables 的 table 填充粘合目录。
- 使用新创建的数据库在 glue etl 中创建一个动态框架,table 在 glue 目录中。
代码示例:
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 创建数据库。
- 我已经在 glue etl 上尝试了第一种方法,在 python shell (dev-endpoint)
上尝试了第二种方法
通过 AWS Glue 文档,我看不到任何关于如何通过 "Python shell" 类型的 Glue 作业连接到 Postgres RDS 的提及。我已在 AWS Glue 中设置 RDS 连接并验证我可以连接到我的 RDS。此外,在创建 Python 作业时,我可以看到我的连接并将其添加到脚本中。
如何使用添加到 Glue 作业的连接到 运行 一些原始 SQL?
提前致谢,
在 glue etl (spark) 中有 2 种可能的方法从 RDS 访问数据:
第一个选项:
- 在 RDS 之上创建粘合连接
- 在第一步创建的胶水连接之上创建一个胶水爬虫
- 运行 爬虫用数据库和指向 RDS tables 的 table 填充粘合目录。
- 使用新创建的数据库在 glue etl 中创建一个动态框架,table 在 glue 目录中。
代码示例:
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 创建数据库。
- 我已经在 glue etl 上尝试了第一种方法,在 python shell (dev-endpoint) 上尝试了第二种方法