分区表中未分区的旧行

Posted

技术标签:

【中文标题】分区表中未分区的旧行【英文标题】:Old rows left unpartitioned in partitioned table 【发布时间】:2019-01-09 10:08:53 【问题描述】:

我正在使用 BigQuery 分区表。分区基于数据中的Timestamp 列(而不是基于摄取)。我们以每天数百万行的速度将数据流式传输到此表中。

我们注意到,我们基于特定日期的查询扫描的数据比分区表中的数据要多。

这是 UNPARTITIONED 分区的当前状态:

我假设右下角的小光点是正常的(今天早上插入的行的流缓冲区),但是在 11 月中旬和 12 月初之间有大量数据块存在于 UNPARTITIONED 分区中,而不是被发送到正确的每日分区(那个时期的分区在__PARTITIONS_SUMMARY__ 中似乎根本不存在)。

我的两个问题是:

这些行没有被正确分区,而这段时间之前和之后的数据都很好,是否有特殊原因?

有没有办法“刷新” UNPARTITIONED 分区,即强制 BigQuery 将行分派到正确的每日分区?

【问题讨论】:

调试:您是否尝试重新创建表?这解决了吗?如果这是一个错误 - 请尝试使用问题跟踪器进行跟进。 您找到问题的答案了吗?我面临一个类似的问题,即数据长期存在于 UNPARTITIONED 分区中。这些数据何时移动到相应的分区是否有时间限制,还是会无限等待大小超过阈值才能移动? @SudarshanMurthy 遗憾的是,我当时发现的唯一解决方法是遵循 Felipe 的建议,将表格复制到一个新表格——这完全解决了我的问题。 【参考方案1】:

我遇到了类似类型的问题,在基于列的分区表中,很多行未分区。所以,我观察到一些记录由于流插入的来源而没有分区。对于灵魂,我使用更新更新表并设置分区日期,其中分区列日期为空。为了更安全,请确保分区日期列不应为空。

【讨论】:

以上是关于分区表中未分区的旧行的主要内容,如果未能解决你的问题,请参考以下文章

Impala - 替换表分区中的所有数据

Linux 建立分区,sdb1.sdb3以前建好的,重新建立一个sdb4为啥保存的时候出问题

如何授予 apache 使用 NTFS 分区上的目录的权限?

“内零头”和“外零头”

IO流

oracle分区表的分区有几种类型