Ik heb de DROP/ TRUNCATE
. geprobeerd scenario, maar het is niet gelukt met verbindingen die al in Glue zijn gemaakt, maar met een pure Python PostgreSQL-driver, pg8000
.
- Download de tar van pg8000 van pypi
- Maak een lege
__init__.py
in de hoofdmap - Zip de inhoud en upload naar S3
- Verwijs naar het zip-bestand in het
Python lib path
van de baan - Stel de DB-verbindingsdetails in als taakparameters (zorg ervoor dat alle sleutelnamen voorafgaan met
--
). Vink het vakje "Versleuteling aan serverzijde" aan.
Dan kunt u eenvoudig een verbinding maken en SQL uitvoeren.
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()