Azure Synapse湖数据库无法读取.parq格式文件的问题咨询
解决方案:处理Synapse中CETAS导出文件扩展名与湖数据库兼容问题
一、让湖数据库读取.parq/.parq.snappy格式文件
湖数据库默认仅识别.parquet扩展名的Parquet文件,要兼容非标准扩展名,需在外部文件格式中添加扩展名匹配规则:
- 创建支持自定义扩展名的外部文件格式
CREATE EXTERNAL FILE FORMAT [ParquetNonStandardExtFormat] WITH ( FORMAT_TYPE = PARQUET, DATA_COMPRESSION = N'org.apache.hadoop.io.compress.SnappyCodec', FORMAT_OPTIONS ( FILE_EXTENSIONS = N'.parq,.parq.snappy' ) );
- 在湖数据库的外部表定义中使用该文件格式,即可匹配对应扩展名的文件。
二、让专用SQL池CETAS导出时生成标准.parquet扩展名
修改CETAS使用的外部文件格式,显式指定Parquet文件扩展名:
- 调整示例代码中的外部文件格式部分,添加
PARQUET_FILE_EXTENSION参数:
CREATE EXTERNAL FILE FORMAT [CompressedParquetFormat] WITH ( FORMAT_TYPE = PARQUET, DATA_COMPRESSION = N'org.apache.hadoop.io.compress.SnappyCodec', FORMAT_OPTIONS ( PARQUET_FILE_EXTENSION = N'.parquet' ) );
- 重新执行CETAS导出任务,生成的文件会自动使用
.parquet(无压缩)或.parquet.snappy(Snappy压缩)的标准扩展名,湖数据库无需额外配置即可直接读取。
注意事项
- 若已有存量非标准扩展名文件,优先选择方案一适配;新导出任务建议用方案二从源头解决格式兼容问题。
- 确认ADLS Gen2路径大小写完全匹配(存储路径大小写敏感),避免路径匹配失败导致的“no dataset found”错误。
内容的提问来源于stack exchange,提问作者rocket porg
相关产品推荐
相关产品推荐

