BigQuery加载*.parquet.gz文件提示非Parquet格式报错咨询
报错信息
创建表失败:读取数据时出错,错误信息:输入文件不是Parquet格式。
问题场景
在BigQuery中尝试将*.parquet.gz文件以Parquet格式加载到目标表时,触发上述报错。
错误原因
BigQuery不会仅通过文件后缀判断文件压缩属性,其对gzip压缩Parquet文件的自动识别能力,依赖存储侧对象携带的正确编码元数据:
- 如果上传的
.parquet.gz文件未配置Content-Encoding: gzip元数据,BigQuery会直接读取gzip压缩后的二进制流做Parquet格式校验 - gzip压缩后的字节流头标识为
1f 8b,和Parquet文件要求的固定头标识PAR1不匹配,格式校验不通过就会抛出“输入文件不是Parquet格式”的错误
验证结果
将触发报错的*.parquet.gz文件手动解压为.parquet原生格式后,重新执行加载操作可正常运行,无解析报错、无数据丢失。
可选解决方法
- 稳妥方案:提前在本地解压所有
.parquet.gz文件,直接上传原生Parquet文件执行加载,无需额外配置存储元数据,兼容性最高 - 压缩存储方案:上传
.parquet.gz文件到存储桶时,主动为对象设置Content-Encoding: gzip元数据,引导BigQuery先执行解压逻辑,再做Parquet格式解析
内容的提问来源于stack exchange,提问作者Franco Piccolo
相关产品推荐
相关产品推荐

