【发布时间】:2019-06-18 14:43:34
【问题描述】:
我正在从 BigQuery 表中导出数据,该表将名为 prop12 的列定义为 NUMERIC 数据类型。请注意,目标格式为 AVRO,无法更改。
bq extract --destination_format AVRO datasetName.myTableName /path/to/file-1-*.avro
当我读取 avro 数据时,使用 spark 无法将此 NUMERIC 数据类型转换为整数。
--prop12: binary (nullable = true)
cannot resolve 'CAST(`prop12` AS INT)' due to data type mismatch: cannot cast BinaryType to IntegerType
在进行 bq 提取时,我有什么方法可以指定 prop12 应导出为整数?
或
如果在 bq 导出期间不可能,我是否只能选择在 spark 中读取二进制数据?
【问题讨论】:
-
您是否考虑过将数字转换为 int64(如果允许;值不超过 int 范围并且没有任何小数位)并将其保存在另一个表中,然后使用该表导出到 AVRO ?
-
@Christopher,使用 int64 将其保存在另一个表中,浮点数对我来说不是选项,因为我们还有其他具有小数的属性。我简化了仅指整数的问题。
标签: apache-spark google-bigquery avro