【发布时间】:2017-03-31 19:36:26
【问题描述】:
BigQuery 通常可以很好地加载 Avro 数据,但“bq load”在时间戳和其他使用 AvrologicalType 属性的日期/时间字段方面存在很多问题。
- 当 BigQuery TIMESTAMP 将我的 Avro 类型 timestamp-millis 数据解释为微秒时间戳(相差 1000)时,我的数据被破坏了。
- 可以加载到 TIMESTAMP 中的时间戳微整数在 BigQuery DATETIME 中变为无效。我在https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types 找不到有效的解释
- ISO8601 格式的字符串无法加载到 TIMESTAMP 或 DATETIME(不兼容类型错误),但我认为如果我加载纯 JSON,BigQuery 会支持这一点。
- Avro“日期”类型无法加载到 DATE(也是不兼容的类型)。
我想我可以通过始终将数据加载到临时字段并使用 CAST 查询或将它们转换为其他字段来解决这些问题,但这不能很好地扩展或支持架构演变或流式传输。在 Avro 中使用定义明确的模式生成数据应该避免为不同的消费者再次转换数据的额外步骤。
BigQuery 真的与 Avro 日期和时间不兼容吗? (或者我在做什么蠢事)
或者这里的问题是“bq load”?有没有更好的方法来加载 Avro 数据?
【问题讨论】:
-
拥有一个示例文件可以帮助调试这个问题(如果是错误,请在此处发布code.google.com/p/google-bigquery/issues/list)
-
我不知道这是一个错误还是 BigQuery 只是不支持将 Avro 数据加载到 TIMESTAMP、DATETIME 和 DATE 数据类型中。 cloud.google.com/bigquery/data-formats#avro_format 没有提到这三种类型中的任何一种。我不确定如何在此处附加二进制 Avro 数据文件..
-
现在支持此功能,请关注 issuetracker.google.com/35905894 了解更多信息。
标签: google-bigquery avro