使用Azure Databricks上的本地作用域表优化blob存储Deltalake



如何在Azure Databricks上优化Azure blob存储增量表,同时不将该表放入全局范围?在Azure blob存储上优化和z排序delta表可以通过(参见文档(:

spark.sql('DROP TABLE IF EXISTS T')
spark.sql("CREATE TABLE T USING DELTA LOCATION
'wasbs://fs@accname.blob.core.windows.net/path/to/df'"
spark.sql('OPTIMIZE T ZORDER BY (colname)')
spark.sql('DROP TABLE IF EXISTS T')

但是,表T具有全局作用域,因此,如果其他用户已经用名称T标记了表,则此命令将失败。

可能的解决方案如下,但这是最简单的方法吗(为什么需要`而不是'(?

spark.sql("OPTIMIZE delta.`wasbs://fs@accname.blob.core.windows.net/path/to/df`
ZORDER BY (colname)")

两个想法:

  1. 你可以&应将表的范围限定为数据库。上面的示例将"default"作为数据库名称。仅以MY_DB为例:
spark.sql("CREATE TABLE MY_DB.T USING DELTA LOCATION
'wasbs://fs@accname.blob.core.windows.net/path/to/df'"
  1. 是的,你的建议也是正确的。back-tics是一种奇怪的火花主义,用于在select子句中指定数据集的LOCATION属性

最新更新