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
ですか? 他に推奨される方法はありますか?