Kev*_*vin 4 avro google-bigquery
BigQuery通常在加载Avro数据方面做得很好,但是“ bq加载”在使用Avro logicalType属性的时间戳和其他日期/时间字段方面存在很多麻烦。
我想我可以通过始终将数据加载到临时字段中并使用对CAST的查询或将其转换为其他字段来解决这些问题,但这无法扩展或不支持模式演化或很好地进行流传输。使用具有明确定义的架构的Avro生产数据应该避免了为不同的使用者再次转换数据的额外步骤。
BigQuery真的与Avro日期和时间不兼容吗?(或者我在做些愚蠢的事情)
还是“ bq负载”是这里的问题?是否有更好的方式加载Avro数据?
更新:现在支持此功能,请访问issuetracker.google.com/35905894了解更多信息。
正如Hua所说,BigQuery不支持Avro逻辑类型,但是使用时间戳加载Avro数据的受支持方式是使用LONG Avro类型将数据加载到具有TIMESTAMP列的现有BigQuery表中。另外,该值应为距EPOCH的微秒(而不是秒或毫秒)。例如,下面的Avro文件具有一个LONG字段,值1408452095000000,它将表示“ 2014-08-19 12:41:35”。
Avro文件的架构:
% avro-tools getschema ~/dataset/simple_timestamp.avro
{
"type" : "record",
"name" : "FullName",
"fields" : [ {
"name" : "t",
"type" : "long"
} ]
}
Run Code Online (Sandbox Code Playgroud)
将Avro文件加载到带有Timestamp字段的表中的示例:
bq mk --schema t:TIMESTAMP -t vimota.simple_timestamp
bq load --source_format=AVRO vimota.simple_timestamp ~/dataset/simple_timestamp.avro
bq head vimota.simple_timestamp:
+---------------------+
| t |
+---------------------+
| 2014-08-19 12:41:35 |
+---------------------+
Run Code Online (Sandbox Code Playgroud)
所有 BigQuery 用户现在都可以公开了解 Avro 逻辑类型的本机理解。请参阅此处的文档页面了解更多详细信息:https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#ological_types
| 归档时间: |
|
| 查看次数: |
3222 次 |
| 最近记录: |