是否可以在保留缓存的同时流式传输到 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 分区表?的主要内容,如果未能解决你的问题,请参考以下文章

同时流式传输到内置扬声器和蓝牙扬声器

如何从文件中流式传输 JSON?

是否可以将音乐从 Android/iOS 设备流式传输到桌面设备?

是否可以将 python 子进程的输出实时流式传输到网页?

使用 IXMLHTTPRequest 2 进行流式传输时如何在 Windows 8 上禁用缓存?

是否可以将Azure信息保护活动日志流式传输到事件中心?