在Databricks中创建表时遭遇路径重叠错误求助
Databricks外部表创建报错:输入路径URL与其他外部表或卷重叠
执行以下SQL创建外部表时触发该错误:
USE CATALOG ${catalog}; CREATE SCHEMA IF NOT EXISTS ${personal.schema}; DROP TABLE IF EXISTS ${personal.schema}.${personal.source}_${personal.table}; CREATE TABLE IF NOT EXISTS ${personal.schema}.${personal.source}_${personal.table} USING PARQUET LOCATION 'abfss://${personal.schema}@${personal.storage_account_name}.dfs.core.windows.net/${personal.source}/${personal.table}/' OPTIONS(recursiveFileLookup = true);
错误原因
指定的LOCATION存储路径已被其他外部表或Databricks卷占用,Databricks不允许多个外部表/卷共享同一存储路径(包含父子层级路径)。
解决步骤
排查路径占用对象
执行以下查询找出占用目标路径的外部表:SELECT table_name, location FROM information_schema.tables WHERE table_schema = '${personal.schema}' AND (location = 'abfss://${personal.schema}@${personal.storage_account_name}.dfs.core.windows.net/${personal.source}/${personal.table}/' OR location LIKE 'abfss://${personal.schema}@${personal.storage_account_name}.dfs.core.windows.net/${personal.source}/${personal.table}/%')执行以下查询找出占用目标路径的卷:
SELECT volume_name, storage_location FROM information_schema.volumes WHERE volume_schema = '${personal.schema}' AND (storage_location = 'abfss://${personal.schema}@${personal.storage_account_name}.dfs.core.windows.net/${personal.source}/${personal.table}/' OR storage_location LIKE 'abfss://${personal.schema}@${personal.storage_account_name}.dfs.core.windows.net/${personal.source}/${personal.table}/%')处理冲突对象
- 若冲突对象是外部表:确认该表无保留价值则执行
DROP TABLE IF EXISTS <冲突表名>删除;需保留则修改当前表的LOCATION参数至未被占用的存储路径。 - 若冲突对象是卷:卷的优先级高于外部表,可删除无用卷(
DROP VOLUME IF EXISTS <冲突卷名>)或为当前表更换新的存储路径。
- 若冲突对象是外部表:确认该表无保留价值则执行
重新执行建表SQL
确认冲突对象清理完成后,再次运行原建表语句即可。
内容的提问来源于stack exchange,提问作者Greencolor
相关产品推荐
相关产品推荐

