我正在尝试创建一个非常基本的胶水工作。
我有两个不同的AWS RDS Mariadb的,有两个相似的表(字段名不同)。
我想从表A转换数据,使其适合表B模式(这似乎相当琐碎,正在工作)。
然后我想更新所有现有的条目(在一个特定的键上)并插入所有不存在的条目。
我使用了基本的转换作业,如果表b为空并且插入工作正常(AWS角色/权限/端口正常)
但是我得到了一个预期的重复键错误,因为它只是试图插入。
我不确定最简单的解决方案是什么,也不知道在哪里可以读到。
表B应该更新的键是central_requisition_id(这是表A中的pk,而不是表B中的pk)
schemaapplymapping= ApplyMapping.apply(
frame=some_frame,
mappings=[
("supplier_id", "int", "central_parent_supplier_id", "int"),
("description", "string", "description", "string"),
("id", "int", "central_requisition_id", "int"),
],
transformation_ctx="schemaapplymapping",)
我不确定您的具体需求,但您可以通过将写入模式设置为overwrite
来解决重复键错误
df.write.format('jdbc').options(url = dest_jdbc_url,
user = username,
password = password,
dbtable = dest ).mode("overwrite").save()