J'ai essayé le DROP/ TRUNCATE
scénario, mais n'ont pas pu le faire avec des connexions déjà créées dans Glue, mais avec un pilote Python PostgreSQL pur, pg8000
.
- Télécharger le tar de pg8000 depuis pypi
- Créer un
__init__.py
vide dans le dossier racine - Compressez le contenu et importez-le sur S3
- Référencez le fichier zip dans le
Python lib path
du travail - Définissez les détails de connexion à la base de données en tant que paramètres de tâche (assurez-vous de faire précéder tous les noms de clé de
--
). Cochez la case "Cryptage côté serveur".
Ensuite, vous pouvez simplement créer une connexion et exécuter 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()