Apache spark sparksql中的增量更新
在Scala中,在Spark SQL中附加增量更新最有效的方法是什么 我有一个员工数据框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
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”)
这将为您提供所需的结果,其中包含更新的行、新行和删除的行