如何在Databricks中创建关联Azure ADLS已有数据的表?
问题描述
在Databricks中执行CREATE TABLE语句时遇到困难,需创建外部表指向Azure ADLS上已有Parquet文件的文件夹(存储账户已挂载,路径为/mnt/my_container/path/to/folder/,文件夹下包含多个Parquet文件)。尝试的语句如下:
CREATE EXTERNAL TABLE hive_metastore.schema.table_name ( field1 STRING, field2 INT ) USING DELTA LOCATION 'dbfs:/mnt/my_container/path/to/folder/' TBLPROPERTIES ('delta.minReaderVersion' = '1', 'delta.minWriterVersion' = '2', 'upgraded_to' = '`stage_db`.`schema`.`table_name_temp`')
疑问:有人告知需使用上述完整的TBLPROPERTIES参数,请问该参数是否存在问题?
问题分析与解决方案
1. TBLPROPERTIES中的upgraded_to参数存在明显问题
upgraded_to是Delta Lake内部用于跟踪表升级历史的元数据属性,完全不需要手动指定。这个属性仅在执行CONVERT TO DELTA或Delta表版本升级操作时由系统自动生成,手动添加会导致Delta表元数据冲突,甚至使表无法被正常识别和访问。
2. 核心场景不匹配问题
你的目标路径存储的是原始Parquet文件,但语句中指定了USING DELTA——Delta格式要求目标路径必须包含Delta表的元数据文件夹(_delta_log),直接指向Parquet文件会导致创建失败。需根据实际需求选择以下两种方案:
方案一:直接基于Parquet文件创建外部表
如果仅需读取Parquet文件,无需转换为Delta格式,直接使用USING PARQUET即可,无需额外的TBLPROPERTIES:
CREATE EXTERNAL TABLE hive_metastore.schema.table_name ( field1 STRING, field2 INT ) USING PARQUET LOCATION 'dbfs:/mnt/my_container/path/to/folder/'
若不确定字段结构,可使用INFER SCHEMA自动推断:
CREATE EXTERNAL TABLE hive_metastore.schema.table_name USING PARQUET LOCATION 'dbfs:/mnt/my_container/path/to/folder/' AS SELECT * FROM parquet.`dbfs:/mnt/my_container/path/to/folder/`
方案二:转换Parquet文件为Delta格式后创建外部表
如果需要Delta表的ACID特性,需先将Parquet文件转换为Delta格式,再创建外部表:
- 第一步:转换Parquet文件为Delta表
该操作会在目标路径自动生成Delta元数据(CONVERT TO DELTA parquet.`dbfs:/mnt/my_container/path/to/folder/`_delta_log文件夹),并设置正确的delta.minReaderVersion和delta.minWriterVersion属性。 - 第二步:创建外部Delta表
此时无需手动指定TBLPROPERTIES,系统会自动读取Delta元数据:
若需手动指定版本兼容性,仅保留版本参数即可(去掉CREATE EXTERNAL TABLE hive_metastore.schema.table_name ( field1 STRING, field2 INT ) USING DELTA LOCATION 'dbfs:/mnt/my_container/path/to/folder/'upgraded_to):CREATE EXTERNAL TABLE hive_metastore.schema.table_name ( field1 STRING, field2 INT ) USING DELTA LOCATION 'dbfs:/mnt/my_container/path/to/folder/' TBLPROPERTIES ( 'delta.minReaderVersion' = '1', 'delta.minWriterVersion' = '2' )
内容的提问来源于stack exchange,提问作者simplycoding
相关产品推荐
相关产品推荐

