【发布时间】:2023-01-23 16:24:47
【问题描述】:
我正在尝试使用 Azure Synapse 无服务器 SQL 池查询我的增量表。 使用 SQL 管理员凭据登录 Azure Data Studio。
这是我尝试对table 进行的简单查询:
SELECT
TOP 100 *
FROM
OPENROWSET(
BULK 'https://(...).dfs.core.windows.net/(...)/table/',
FORMAT = 'DELTA'
) AS [result]
我收到错误:
Content of directory on path 'https://.../table/_delta_log/*.*' cannot be listed.
如果我查询任何其他表,例如table_copy我没有错误。
我可以查询我拥有的每张表,除了这张table。
按照我找到的每一篇文档和主题,尝试了以下操作:
- (IAM) 设置存储 Blob 贡献者、存储 Blob 所有者、存储队列数据贡献者和所有者
- 在 ACL 中为托管身份 (Synapse Studio) 设置读、写、执行访问和默认权限,
- 将 ACL 传播到每个孩子
- 恢复了文件夹的默认权限
- 制作表格的副本,删除原始表格,然后再次覆盖它(pyspark)
# Read original table
table_copy = spark.read.format("delta")
.option("recursiveFileLookup", "True")
.load(f"abfss://...@....dfs.core.windows.net/.../table/")
# Create a copy of it
table_copy.write.format('delta')
.mode("overwrite")
.option("overwriteSchema","true")
.save(f"abfss://...@....dfs.core.windows.net/.../table_copy/")
# Remove original one
dbutils.fs.rm('abfss://...@....dfs.core.windows.net/.../table/',recurse=True)
# Overwrite it
table_copy.write.format('delta')
.mode("overwrite")
.option("overwriteSchema","true")
.save(f"abfss://...@....dfs.core.windows.net/.../table/")
如果我将table 复制到table_copy,我可以阅读它。
请注意,在 Azure Synapse UI 中,我可以查询 table。在它之外我不能。
【问题讨论】:
标签: azure azure-synapse delta-lake azure-data-studio