检查 delta table 是否存在于路径上或数据块中
check if delta table exists on a path or not in databricks
我需要在加载之前从 delta-lake table 中删除某些数据。我可以从 delta table 中删除数据(如果它存在)但是当 table 不存在时它会失败。
下面的 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)
以上代码仅在该路径上存在增量数据时才有效,否则将失败。
有人可以分享一种方法,如果存在增量数据则执行删除语句,否则忽略删除语句吗?
根据DeltaTable's Javadoc,您可以使用以下命令检查指定路径中是否存在增量table:
DeltaTable.isDeltaTable(spark, "path/to/table")
如果路径不包含增量 table 或不存在,它将 return 为假。所以你的代码将是:
val del_ID = "Check_ID ="+ "123"
if (DeltaTable.isDeltaTable(spark, path)) {
DeltaTable.forPath(spark, path).delete(del_ID)
}
使用 Spark python 的其他方法 SQL API:
spark.sql(f'describe detail {path}').collect()[0].asDict()['format'] == 'delta'
当您无法使用 Delta API 时,这会派上用场,如在 databricks-connect 中。
我需要在加载之前从 delta-lake table 中删除某些数据。我可以从 delta table 中删除数据(如果它存在)但是当 table 不存在时它会失败。
下面的 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)
以上代码仅在该路径上存在增量数据时才有效,否则将失败。
有人可以分享一种方法,如果存在增量数据则执行删除语句,否则忽略删除语句吗?
根据DeltaTable's Javadoc,您可以使用以下命令检查指定路径中是否存在增量table:
DeltaTable.isDeltaTable(spark, "path/to/table")
如果路径不包含增量 table 或不存在,它将 return 为假。所以你的代码将是:
val del_ID = "Check_ID ="+ "123"
if (DeltaTable.isDeltaTable(spark, path)) {
DeltaTable.forPath(spark, path).delete(del_ID)
}
使用 Spark python 的其他方法 SQL API:
spark.sql(f'describe detail {path}').collect()[0].asDict()['format'] == 'delta'
当您无法使用 Delta API 时,这会派上用场,如在 databricks-connect 中。