是否可以在保留缓存的同时流式传输到 BigQuery 分区表?
Posted
技术标签:
【中文标题】是否可以在保留缓存的同时流式传输到 BigQuery 分区表?【英文标题】:Is it possible to stream to a BigQuery partitioned table while preserve caching? 【发布时间】:2018-07-10 08:55:25 【问题描述】:我在 BigQuery 中有一个按天分区的表。数据流作业使用流式 API 连续插入新记录,但只插入最新的分区(在极端情况下是两个,当数据在几天的边界上稍微乱序时)。
另一方面,我查询该表很多汇总历史月份,而不涉及最近几天,即流缓冲区。
我想利用此类查询结果的缓存。不幸的是,流式传输到表会禁用缓存,即使理论上缓存的结果不受流式传输行的影响。
如何在历史分区上使用缓存,同时仍然能够流式传输到最新分区?
如果不可能开箱即用,这是一个好的设计:
管理两个表:“最近”和“历史”。 流式传输发生在“最近”。 定期将“最近”合并到“历史”中,然后清除“最近”。 查询发生在某种关于“历史”和“最近”的视图上?如果是,如果只查询“历史”数据,我将如何定义这样一个使用缓存的视图?或者我需要有自己的查询重写工具吗?
也许你有其他想法?
【问题讨论】:
【参考方案1】:你不能use caching and streaming contemporaneously。已经有一个你想要的feature request asking for the same。
正如您所说,作为一种解决方法,您需要两个不同的表并使用数据冗余。我同意你发布的方法:
-
管理两个表:“最近”(流)和“历史”(查询)。
定期将“最近”合并到“历史”中,然后清除“最近”。
查看here 如何“管理分区表”。有一个基于bq cp
命令的用例列表,可以帮助您将“最近”表合并到“历史”表中。
【讨论】:
以上是关于是否可以在保留缓存的同时流式传输到 BigQuery 分区表?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以将音乐从 Android/iOS 设备流式传输到桌面设备?