VNK*_*VNK 11 scala databricks delta-lake
在加载之前,我需要从 delta-lake 表中删除某些数据。我可以从增量表中删除数据(如果存在),但当表不存在时会失败。
下面的 Databricks scala 代码
// create delete statement
val del_ID = "Check_ID =" + "123"
// get delta table from path where data exists
val deltaTable = DeltaTable.forPath(spark, path)
// delete data from delta table
deltaTable.delete(del_ID)
Run Code Online (Sandbox Code Playgroud)
仅当该路径上存在增量数据时,上述代码才有效,否则将失败。
有人可以分享一种方法,如果增量数据存在,则执行删除语句,否则删除语句将被忽略?
Vin*_*oba 18
根据DeltaTable 的 Javadoc,您可以使用以下命令检查指定路径中是否存在增量表:
DeltaTable.isDeltaTable(spark, "path/to/table")
Run Code Online (Sandbox Code Playgroud)
如果路径不包含增量表或不存在,则返回 false。所以你的代码将是:
val del_ID = "Check_ID ="+ "123"
if (DeltaTable.isDeltaTable(spark, path)) {
DeltaTable.forPath(spark, path).delete(del_ID)
}
Run Code Online (Sandbox Code Playgroud)
ays*_*ysa 10
在 python 中使用 Spark SQL API 的其他方法:
spark.sql(f'describe detail {path}').collect()[0].asDict()['format'] == 'delta'
Run Code Online (Sandbox Code Playgroud)
当您无法使用 Delta API(如 databricks-connect 中)时,这会很方便。
| 归档时间: |
|
| 查看次数: |
32668 次 |
| 最近记录: |