BigQuery 加载镶木地板错误 - Parquet 中的字段 INT32 与架构中的 double 类型不兼容
Posted
技术标签:
【中文标题】BigQuery 加载镶木地板错误 - Parquet 中的字段 INT32 与架构中的 double 类型不兼容【英文标题】:BigQuery load parquet error - incompatible types for field INT32 in Parquet vs. double in schema 【发布时间】:2019-01-16 07:39:09 【问题描述】:我正在尝试将 parquet 文件列表加载到 BigQuery 表中,但出现错误:
bq --location=EU load --source_format=PARQUET project:Input.k_2017_11_new "gs://my_bucket/2017_11/11/*.parquet"
等待 bqjob_r557b5eb5986df8a0_0000016855915d09_1 ... (34s) 当前状态:完成
加载操作中的 BigQuery 错误:错误处理作业 “项目:bqjob_r557b5eb5986df8a0_0000016855915d09_1”:出错时 读取数据,错误消息:字段类型不兼容 'data.list.element.p':Parquet 中的 INT32 与架构中的双精度
我实际上不需要导致错误的字段,但找不到跳过此列的方法。
这个问题有解决办法吗?
我尝试使用 json 文件指定架构,并强制此字段为 FLOAT、或 INT64、STRING,但到目前为止没有任何效果。
【问题讨论】:
【参考方案1】:我看到您正在使用 cloudShell 从 parquet 加载到 BigQuery。尝试以 JSON 格式编写模式文件,将其复制或上传到您的 cloudShell 实例中,并在您提供 SOURCE-TO-PATH 参数后调用该文件:
bq --location=EU load --source_format=PARQUET project:Input.k_2017_11_new "gs://my_bucket/2017_11/11/*.parquet" ./mySchema.json
【讨论】:
【参考方案2】:我在使用 python 时遇到了类似的问题,在尝试写入 bq 时创建了一个额外的列。
LoadJobConfig "ignore Unknown Values" 参数解决了我的问题,并且可以在 command-line 中作为 --ignore_unknown_values 传递
【讨论】:
以上是关于BigQuery 加载镶木地板错误 - Parquet 中的字段 INT32 与架构中的 double 类型不兼容的主要内容,如果未能解决你的问题,请参考以下文章