Jeg har prøvet DROP/ TRUNCATE
scenario, men har ikke været i stand til at gøre det med forbindelser, der allerede er oprettet i Glue, men med en ren Python PostgreSQL-driver, pg8000
.
- Download taren til pg8000 fra pypi
- Opret en tom
__init__.py
i rodmappen - Zip indholdet og upload til S3
- Referer til zip-filen i
Python lib path
af jobbet - Indstil DB-forbindelsesdetaljerne som jobparametre (sørg for at sætte
--
foran alle nøglenavne ). Sæt flueben i "Kryptering på serversiden".
Så kan du blot oprette en forbindelse og udføre 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()