我有一个脚本,从甲骨文数据库下载数据,并上传到谷歌BigQuery。这是通过写入一个Avro文件来完成的,然后使用BQ的python框架直接上传该文件。我要将数据上传到的BigQuery表具有预定义的模式,其中一些模式包含日期时间字段。
Field CHANGED has incompatible types. Configured schema: datetime; Avro file: string.
我还尝试在导出时将字段数据转换为时间戳,但这在BigQuery中产生了一个内部错误:
An internal error occurred and the request could not be completed. Error: 3144498
是否可以使用Avro导入日期时间字段?
发布于 2020-04-23 06:02:40
在Avro中,逻辑数据类型必须包含attribute logicalType,您的架构定义中可能未包含此字段。
Here有几个类似下面的例子。据我所知,类型可以是int或long,但logicalType应该是date:
{
'name': 'DateField',
'type': 'int',
'logicalType': 'date'
}一旦设置了逻辑数据类型,请重试。文档确实表明它应该是有效的:
Avro logical type --> date
Converted BigQuery data type --> DATE如果出现错误,检查avro文件的架构会很有帮助,您可以使用以下命令获取其详细信息:
java -jaravro-tools-1.9.2.jargetschema my-avro-file.avro
更新
此外,avro文件(类型为DATE o TIMESTAMP)中存储的值与特定时区无关,从这个意义上讲,它非常类似于BigQuery Timestamp数据类型。
https://stackoverflow.com/questions/61366924
复制相似问题