使用键的数据框从 DeltaTable 中删除
Deleting from a DeltaTable using a dataframe of keys
我想对 DeltaTable 执行删除操作,其中要删除的键已经存在于 DataFrame 中。
目前正在收集驱动上的DataFrame,然后运行删除操作。但是我觉得效率很低。
(如下所示)
val keys = keysDF
.select("key")
.map(_.getLong(0))
.collect()
DeltaTable.forPath(spark, "/path/to/table")
.delete(col("key").isInCollection(keys))
有没有更有效的方法来实现这个?我正在考虑以某种方式利用我的密钥已经分布在集群中。
是的 - 有一个非常好的 api in delta
val keys = keysDF
.select("key")
val targetDeltaTable = DeltaTable.forPath(spark, path)
targetDeltaTable.alias("t")
.merge(
keys.alias("k"),
"t.key = s.key")
.whenMatched().delete()
.execute()
我想对 DeltaTable 执行删除操作,其中要删除的键已经存在于 DataFrame 中。
目前正在收集驱动上的DataFrame,然后运行删除操作。但是我觉得效率很低。
(如下所示)
val keys = keysDF
.select("key")
.map(_.getLong(0))
.collect()
DeltaTable.forPath(spark, "/path/to/table")
.delete(col("key").isInCollection(keys))
有没有更有效的方法来实现这个?我正在考虑以某种方式利用我的密钥已经分布在集群中。
是的 - 有一个非常好的 api in delta
val keys = keysDF
.select("key")
val targetDeltaTable = DeltaTable.forPath(spark, path)
targetDeltaTable.alias("t")
.merge(
keys.alias("k"),
"t.key = s.key")
.whenMatched().delete()
.execute()