问题描述
如何在不将表放入全局范围的同时优化Azure Databricks上的Azure Blob存储增量表? 可以通过(cf. docs)对Azure blob存储上的增量表进行优化和z排序:
from .useful import Hash
但是,表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
而不是`
)?
'
解决方法
两个想法:
- 您可以并且应该将表的范围限定为数据库。上面的示例将“默认”作为数据库名称。仅以
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.min.js"></script> <div id="my_chart"></div>
为例:
MY_DB
- 是的,您的建议也是正确的。后面的标记是一种怪异的火花,用于在select子句中指定数据集的LOCATION属性。