gpt4 book ai didi

python - AWS Glue - 在插入之前截断目标 postgres 表

转载 作者:太空狗 更新时间:2023-10-29 21:25:29 26 4
gpt4 key购买 nike

我试图在插入之前截断一个 postgres 目标表,并且通常尝试利用已经在 GLUE 中创建的连接来触发外部函数。

有人做过吗?

最佳答案

我已经尝试过DROP/TRUNCATE 方案,但无法使用已在 Glue 中创建的连接,而是使用纯 Python PostgreSQL 驱动程序,pg8000 .

  1. 下载 pg8000 from pypi 的 tar
  2. 在根文件夹中创建一个空的__init__.py
  3. 压缩内容并上传到 S3
  4. 在作业的 Python lib 路径 中引用 zip 文件
  5. 将数据库连接详细信息设置为作业参数(确保在所有键名前加上 --)。勾选“服务器端加密”复选框。

然后您可以简单地创建连接并执行 SQL。

import sys
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.dynamicframe import DynamicFrame
from awsglue.job import Job

import pg8000

args = getResolvedOptions(sys.argv, [
'JOB_NAME',
'PW',
'HOST',
'USER',
'DB'
])
# ...
# Create Spark & Glue context

job = Job(glueContext)
job.init(args['JOB_NAME'], args)

# ...
config_port = 5432
conn = pg8000.connect(
database=args['DB'],
user=args['USER'],
password=args['PW'],
host=args['HOST'],
port=config_port
)
query = "TRUNCATE TABLE {0};".format(".".join([schema, table]))
cur = conn.cursor()
cur.execute(query)
conn.commit()
cur.close()
conn.close()

关于python - AWS Glue - 在插入之前截断目标 postgres 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47081088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com