Jag har provat DROP/ TRUNCATE
scenario, men har inte kunnat göra det med anslutningar som redan skapats i Glue, utan med en ren Python PostgreSQL-drivrutin, sid8000
.
- Ladda ner tar för pg8000 från pypi
- Skapa en tom
__init__.py
i rotmappen - Zip upp innehållet och ladda upp till S3
- Referera till zip-filen i
Python lib path
av jobbet - Ange DB-anslutningsdetaljerna som jobbparametrar (se till att alla nyckelnamn läggs före
--
). Markera rutan "Kryptering på serversidan".
Sedan kan du helt enkelt skapa en anslutning och köra 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()