Ich habe es mit DROP/ TRUNCATE
versucht Szenario, konnte dies jedoch nicht mit bereits in Glue erstellten Verbindungen tun, sondern mit einem reinen Python-PostgreSQL-Treiber, pg8000
.
- Laden Sie das tar von pg8000 von pypi herunter
- Erstellen Sie eine leere
__init__.py
im Root-Ordner - Inhalte komprimieren und auf S3 hochladen
- Verweisen Sie auf die ZIP-Datei im
Python lib path
des Jobs - Legen Sie die DB-Verbindungsdetails als Jobparameter fest (achten Sie darauf, allen Schlüsselnamen
--
voranzustellen ). Aktivieren Sie das Kontrollkästchen "Serverseitige Verschlüsselung".
Dann können Sie einfach eine Verbindung herstellen und SQL ausführen.
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()