3

ID を主キーとしてテーブルを MySQL に保存しています。Spark を使用して Mysql に書き込みたいのですが、(主キーに基づいて) Mysql に既に存在するデータフレームの行を無視し、新しい行セットのみを書き込みます。

ID (PK) | Name | Description

    1   |   A  | Something1
    2   |   B  | Something2

以下を使用して、Spark データフレーム (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