使用Azure Databricks上的本地范围表优化Blob存储Deltalake

问题描述

如何在不将表放入全局范围的同时优化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而不是`)?

'

解决方法

两个想法:

  1. 您可以并且应该将表的范围限定为数据库。上面的示例将“默认”作为数据库名称。仅以<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.min.js"></script> <div id="my_chart"></div>为例:
MY_DB
  1. 是的,您的建议也是正确的。后面的标记是一种怪异的火花,用于在select子句中指定数据集的LOCATION属性。