【问题标题】:Connect to Postgres via AWS Glue Python script通过 AWS Glue Python 脚本连接到 Postgres
【发布时间】:2019-05-05 21:57:08
【问题描述】:

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

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

提前致谢,

【问题讨论】:

  • 你运气好吗?

标签: aws-glue


【解决方案1】:

在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 创建数据库。
  • 我已经在glue etl 上尝试了第一种方法,在python shell (dev-endpoint) 上尝试了第二种方法

【讨论】:

  • 希望能够执行原始 SQL 查询。如CREATE ...。在上述情况下,这是不可能的......根据我的理解。 ://
  • @Harsh "你需要通过 postgres jdbc jar 来使用 spark sql 创建数据库。" - 我该怎么做?
  • @t_warsop :您需要 ssh 到端点,下载 postgre jar 并使用 spark-submit 命令传递它。我想不出更好的开发端点方法。
  • @mcm : 可以使用 spark 的 sqlcontext 来执行 CREATE 命令,sqlContext.sql(query)。
猜你喜欢
  • 1970-01-01
  • 2019-02-21
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多