创建BigQuery表时出现Hive分区相关报错该如何解决
报错原因与解决方案
Hive partitioned loads require that the HivePartitioningOptions be set, with both a sourceUriPrefix and mode provided. No sourceUriPrefix was provided.
该报错触发的核心原因是BigQuery识别到你启用了Hive分区加载能力,但缺少必填的配置项,可根据你的实际使用场景选择对应处理方案:
场景1:无需加载Hive分区格式的CSV文件
绝大多数本地CSV上传建表触发该报错,都是误开启了Hive分区检测功能,按对应操作路径关闭即可:
- 网页UI操作:在创建表的「源数据」配置模块,取消勾选自动检测Hive分区键选项,重新提交建表任务
bq命令行操作:删除加载命令中的--hive_partitioning_mode参数,重新执行- API/SDK操作:移除Load配置中的
hivePartitioningOptions相关配置项即可
场景2:需要加载Hive分区结构的CSV文件
如果你的源文件本身就是按照Hive分区目录规则存储(例:路径格式为存储路径/分区键1=值/分区键2=值/xxx.csv),则补全缺失的两个必填配置即可:
- 先确定所有分区文件夹的统一上层根路径,也就是
sourceUriPrefix,例:所有分区都存在gs://my_bucket/csv_data/目录下,该路径就是要配置的前缀 - 选择分区模式,常规场景选择
AUTO让BigQuery自动识别分区键即可
不同操作方式的配置示例
- 网页UI:勾选自动检测Hive分区键后,在出现的「源URI前缀」输入框中填入你确认的根路径前缀
bq命令行:在原有加载命令中补充两个分区配置参数,参考示例:
bq load \ --source_format=CSV \ --hive_partitioning_mode=AUTO \ --hive_partitioning_source_uri_prefix=gs://my_bucket/csv_data/ \ 你的项目ID.你的数据集名.你的表名 \ gs://my_bucket/csv_data/*/*.csv
- API/SDK:在
HivePartitioningOptions配置结构体中同时传入sourceUriPrefix和mode两个字段即可
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

