在ins之前,AWS Glue截断目的地postgres表

2024-05-15 10:10:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

有人能做到吗?在


Tags: 函数目的利用postgresglue
2条回答

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

  1. 下载pg8000 from pypi的tar
  2. 在根文件夹中创建一个空的__init__.py
  3. 压缩内容并上传到S3
  4. 引用作业的Python lib path中的zip文件
  5. 将DB connection details设置为job params(确保在所有键名前面加上)。勾选“服务器端加密”框。在

然后您可以简单地创建一个连接并执行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()

在遵循自然人回应的第(4)步之后

sc.addPyFile("/home/glue/downloads/python/pg8000.zip")

import pg8000

在一个开发端点为我工作(齐柏林笔记本)

更多信息:https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html

相关问题 更多 >