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