Beim Schreiben von Daten in RDS mit DynamicFrame in einem Klebejob Da es durch Anhängen geschrieben wird, werden Daten dupliziert, wenn derselbe Job ausgeführt wird.
Durch Konvertieren eines DynamicFrame in einen DataFrame können Sie im Überschreibmodus schreiben.
Fügen Sie dem Code des automatisch generierten Jobs Folgendes hinzu. Es wird davon ausgegangen, dass die JDBC-Verbindungsdefinition vorbereitet ist.
#datasink4 = glueContext.write_dynamic_frame.from_jdbc_conf(frame = dropnullfields3, catalog_connection = "MyConnection", connection_options = {"dbtable": "my_table", "database": "my_database"}, transformation_ctx = "datasink4")
#Abrufen von JDBC-Informationen aus der Verbindungsdefinition
jdbc_conf = glueContext.extract_jdbc_conf(connection_name='MyConnection')
#Dynamischen Frame in Datenframe konvertieren
df = dropnullfields3.toDF()
#Schreiben Sie DataFrame in die Tabelle (Überschreibmodus)
df.write \
.format("jdbc") \
.option("url", jdbc_conf['url']) \
.option("dbtable", "my_database.my_table") \
.option("user", jdbc_conf['user']) \
.option("password", jdbc_conf['password']) \
.mode("overwrite") \
.save()
job.commit()
In diesem Beispiel habe ich S3-Daten in Aurora Serverless MySQL geschrieben, konnte sie jedoch überschreiben.
Recommended Posts