spark通过savemode将数据写入为append或overwrite

r7xajy2e  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(1447)

根据我的分析,append将重新添加数据,即使它在表中可用,而overwrite savemode将更新现有日期(如果有),并在数据框中添加添加行。

  1. val secondCompaniesDF = Seq((100, "comp1"), (101, "comp2"),(103,"comp2"))
  2. .toDF("companyid","name")
  3. secondCompaniesDF.write.mode(SaveMode.Overwrite)
  4. .option("createTableColumnTypes","companyid int , name varchar(100)")
  5. .jdbc(url, "Company", connectionProperties)

如果savemode是append,并且这个程序被重新执行,公司将有3行,而在覆盖的情况下,如果用任何更改或添加行重新执行,现有记录将被更新并添加新行
注意:覆盖将删除表并重新创建表。是否有任何方法可以更新现有记录并插入新记录,比如upsert。

a0x5cqrl

a0x5cqrl1#

对于upsert和merge,您可以使用databricks或hudi的delta lake
以下是链接
https://github.com/apache/hudi
https://docs.databricks.com/delta/delta-intro.html

相关问题