![](/img/trans.png)
[英]How many versions are created in a delta table in a Data lake on Azure
[英]Azure Data Studio: _delta_log/*.*' cannot be listed
我正在嘗試使用 Azure Synapse Serverless 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
。
按照我找到的每一篇文檔和主題,嘗試了以下操作:
# 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
。 在它之外我不能。
似乎權限和防火牆設置設置正確。
您可以嘗試檢查表格的一件事是格式正確(Delta 格式)並且它具有正確的架構,還可以檢查目錄delta_log
創建。
試試這個方法:
首先,我沒有任何增量表。 所以我使用spark.read
創建了示例 dataframe df
。
然后,我使用abfss://<container_name>@<storage_account_name>...
路徑將 dataframe df
覆蓋為增量格式,並使用saveAsTable
名稱並行創建了一個表: test_table
table_path = f"abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<folder>"
df.write.format("delta").mode("overwrite").option("path", table_path).saveAsTable("test_table")
您可以檢查test_table
和abfss
存儲位置。 我成功地得到了delta格式的數據。
另一種替代方法,您可以創建一個新的增量表並將數據從舊表復制到新的增量表。 您可以像這樣使用查詢:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.