我正在使用 Azure Databricks 并将数据存储在 Delta Lake 表中。由于某种原因,我想在同一网络中创建一个新的数据 block ,并从这个新创建的数据 block 访问现有的 Delta Lake 表。
我尝试安装到相同的存储路径,并在运行查询如果不存在则创建表
时收到以下错误:
Error in SQL Statement: Analysis Exception: Cannot create table The associated location ('dbfs:/mnt/[REDACTED]/processed/leads') is not empty but it's not a Delta table
该位置包含增量表和文件,但无法使用新的数据 block 。
当我尝试从表中选择*
时,它会显示
Error in SQL statement: AnalysisException: Table or view not found: leads_enrichment.leads;
'Project [*]
大多数地方都显示要删除表/创建或替换,但我不能丢失 Delta Lake 中的日期。
任何人都可以建议一种访问现有增量表和新创建的数据 block 中的数据的方法吗?
最佳答案
从增量表中选择时(如果位置位于存储挂载路径中),请使用以下语法。
%sql
select * from delta. `dbfs:/mnt/bricks3data/table1`;
I tried mounting to the same storage path and while running the query
因此,您将增量表从一个数据 block 存储到存储帐户,并尝试通过装载路径从另一个数据 block 访问这些增量表。
这些是我的增量表,存储在一个数据 block 的存储帐户中。
我已将其安装在另一个 databricks 中,我的安装点是 bricks3data
。您可以使用以下代码将增量表存储在新数据 block 中。
%python
from delta.tables import *
for i in dbutils.fs.ls("/mnt/bricks3data/"):
table_path=i.path
if(DeltaTable.isDeltaTable(spark,table_path)):
table_name=table_path.split("/")[-2]
print("Table_name : ",table_name)
#Create delta table with same name from the mount path
spark.sql("create table if not exists {name} as select * from delta. `{path}`".format(name=table_name,path=table_path))
print(table_name," saved as delta table from storage")
存储的表:
关于azure - 访问另一个 Azure Databricks 中的现有 Delta Lake 表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75917408/