【发布时间】:2016-08-04 21:00:33
【问题描述】:
我正在尝试将新数据集与旧数据集合并,我有每个表类型的主键 Seq[String],以及具有相同架构的旧数据框和新数据框。
如果主键列值匹配,我想将旧数据框中的行替换为新数据框中的行,如果它们不匹配,我想添加该行。
到目前为止我有这个:
val finalFrame: DataFrame = oldDF.withColumn("old/new",lit("1"))
.union(newDF.withColumn("old/new",lit("2")))
.dropDuplicates(primaryKeySet)
我添加了一个 1 和 2 的文字列来跟踪哪些行是哪些行,将它们合并在一起,并根据主键列名的 Seq[String] 删除重复项。这个解决方案的问题是它不允许我指定从表中删除哪些重复项,如果我可以指定删除带有“1”的重复项是最佳的,但我愿意接受替代解决方案。
【问题讨论】:
标签: scala apache-spark dataframe apache-spark-sql