Databricks Autoloader处理ADLS多类型文件入Unity Catalog失败求助
Databricks Autoloader多文件类型摄入问题解答
Autoloader不支持单次任务同时处理多种不同格式的文件。你在SQL里指定了"parquet"格式后,Autoloader会用Parquet解析器读取目录下所有文件,.txt是纯文本格式、.txt.parquet(哪怕实际内容是Parquet)也会因为后缀不匹配被误处理,最终导致解析失败。
给你几个可行的解决办法:
按格式分任务处理
分别创建流处理任务,针对不同格式的文件单独摄入:- 处理Parquet类文件(包含
.parquet和.txt.parquet):CREATE STREAMING LIVE TABLE Example_parquet_raw TBLPROPERTIES ("quality" = "bronze") AS SELECT * FROM cloud_files( "/mnt/Example", "parquet", map("cloudFiles.pathGlobFilter", "*parquet") ); - 处理TXT文件:
CREATE STREAMING LIVE TABLE Example_txt_raw TBLPROPERTIES ("quality" = "bronze") AS SELECT * FROM cloud_files("/mnt/Example", "text");
- 处理Parquet类文件(包含
过滤非目标格式文件
如果只需要摄入标准Parquet文件,通过cloudFiles.pathGlobFilter参数过滤掉.txt和.txt.parquet:CREATE STREAMING LIVE TABLE Example_raw TBLPROPERTIES ("quality" = "bronze") AS SELECT * FROM cloud_files( "/mnt/Example", "parquet", map("cloudFiles.pathGlobFilter", "*.parquet") );统一文件格式后摄入
先通过Databricks作业把.txt文件转换成Parquet格式,或者重命名.txt.parquet文件为标准.parquet后缀,再用Autoloader统一摄入。
内容的提问来源于stack exchange,提问作者Brett
相关产品推荐
相关产品推荐

