Ho provato DROP/ TRUNCATE
scenario, ma non sono stati in grado di farlo con connessioni già create in Glue, ma con un driver Python PostgreSQL puro, pg8000
.
- Scarica il tar di pg8000 da pypi
- Crea un
__init__.py
vuoto nella cartella principale - Comprimi i contenuti e caricali su S3
- Fai riferimento al file zip nel
Python lib path
del lavoro - Imposta i dettagli della connessione DB come parametri del lavoro (assicurati di anteporre tutti i nomi delle chiavi con
--
). Spunta la casella "Crittografia lato server".
Quindi puoi semplicemente creare una connessione ed eseguire 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()