Apache spark sparksql中的增量更新

Apache spark sparksql中的增量更新,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,在Scala中,在Spark SQL中附加增量更新最有效的方法是什么 我有一个员工数据框E1,它用主键empId存档 我还有一个最新的员工数据框,只想将更新的、新的和删除的数据框写回归档数据框 例如: 员工档案: EmpId, EmpName 1 Tom 2 Harry 最近雇员: EmpId, EmpName 2 Harry Lewis 3 Hermoine 差异应返回: EmpId, EmpName, deleted 1 Tom

在Scala中,在Spark SQL中附加增量更新最有效的方法是什么

我有一个员工数据框
E1
,它用主键
empId
存档

我还有一个最新的员工数据框,只想将更新的、新的和删除的数据框写回归档数据框

例如:

员工档案:

EmpId, EmpName
1      Tom
2      Harry
最近雇员:

EmpId, EmpName
2      Harry Lewis
3      Hermoine
差异应返回:

EmpId, EmpName, deleted
1      Tom         yes
2      Harry Lewis no
3      Hermoine    no

如果您只想查找更新的行或新行,则可以使用除之外的,但是,由于删除的行应该存在,这就有点复杂了。假设
E1
是存档的员工数据帧,
E2
是最近的数据帧,您可以在Scala中使用完全联接,如下所示:

E1.withColumnRename(“EmpName”、“EmpNameOld”)
.加入(E2,Seq(“EmpId”),“fullouter”)
.where($“EmpName”.isNull | |$“empnameld”.isNull | |$“EmpName”=!=$“empnameld”)
.withColumn(“已删除”,当($”EmpName“.isNull,“yes”)。否则(“否”)
.withColumn(“EmpName”,coalesce($“EmpName”,$“EmpNameOld”))
.drop(“empnameld”)
这将为您提供所需的结果,其中包含更新的行、新行和删除的行