如何解决使用键的数据框从DeltaTable中删除
我想在DeltaTable上执行删除操作,其中要删除的键已经存在于DataFrame中。
当前,我正在收集驱动程序上的DataFrame,然后运行删除操作。但是对我来说,这似乎效率很低。
(如下所示)
val keys = keysDF
.select("key")
.map(_.getLong(0))
.collect()
DeltaTable.forPath(spark,"/path/to/table")
.delete(col("key").isInCollection(keys))
有没有更有效的方法来实现这一目标?我在想以某种方式利用我的密钥已经分布在整个集群中。
解决方法
是的-在数据湖中有一个非常好的api
val键= keysDF .select(“ key”)
val targetDeltaTable = DeltaTable.forPath(火花,路径)
targetDeltaTable.alias(“ t”) 。合并( keys.alias(“ k”), “ t.key = s.key”) .whenMatched()。delete() .execute()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。