3

我将我的表以 ID 作为主键存储在 MySQL 中。我想使用 Spark 写入 Mysql,其中它忽略数据框中已经存在于 Mysql 中的行(基于主键)并且只写入新的行集。

ID (PK) | Name | Description

    1   |   A  | Something1
    2   |   B  | Something2

当我尝试使用以下内容将 Spark Dataframe(包含 ID 3 和 4)写入此表时SaveMode.Append

val prop = new java.util.Properties
prop.setProperty("driver", "com.mysql.jdbc.Driver")
prop.setProperty("user", "username")
prop.setProperty("password", "XXX")



dataFrame
  .write
  .mode(SaveMode.Append)
  .jdbc(jdbc:mysql://XXXXX:3306/db_name,"table_name",prop)

以下是我实现的结果:

ID (PK) | Name | Description

    1   |   A  | Something1
    2   |   B  | Something2
    3   |   C  | Something3
    4   |   D  | Something4

但是,当我使用SaveMode.Ignore(ID 为 4、5、6)时,整个数据帧写入都会被忽略,而不仅仅是 ID 4 会被忽略。

这种行为正常吗?如果我想ID 5 and 6在数据框包含时存储ID 4, 5 and 6怎么办?还有其他推荐的方法吗?

4

0 回答 0