繁体   English   中英

BIGQUERY - 整数范围分区表中的未分区分区

[英]BIGQUERY - UNPARTITIONED partition in an integer range partitioned table

我尝试将数据写入我的整数范围分区表中,我将这篇文章用作参考。 其实我的表有两列:customer_id(INT)和product_name(STRING),所以我用customer_id作为字段来分区。 另一方面,我读过的文章说:

对于流式传输,流式缓冲区中的数据位于 UNPARTITIONED 分区中。 提取数据时,它最初保留在 UNPARTITIONED 分区中。 当有足够的未分区数据时,它会被重新分区到特定的分区中。

当有足够的未分区数据时这句话真的让我感到困惑,因为我不知道在这种情况下有多少数据行是“足够的”,比如 5000 行还是 10000 行?。 请问我们有机会知道吗?

在我的演示中,一开始,我的表是空的,所以我将 4000 行(这 4000 行的相同 customer_id )流式传输到我的表中,我一直等到我的数据超出流缓冲区(实际上我一直等到流缓冲区统计信息消失)在我的表的详细信息中),然后,我使用此查询来了解我有多少个分区:

#legacySQL
select table_id, partition_id
from [mydataset.customer_product$__PARTITIONS_SUMMARY__] 

结果是:

|---------------------|------------------|
|      table_id       |   partition_id   |
|---------------------|------------------|
|  customer_product   |__UNPARTITIONED__ |
|---------------------|------------------|

那请问是什么问题?
此外,如果我覆盖我的表,通过下面的这个查询和查询设置的一些设置,

-- change some settings in Query settings to overwrite the table
select *
from mydataset.customer_product

我会得到:(19265786 是 4000 个数据行的 customer_id)

|---------------------|------------------|
|      table_id       |   partition_id   |
|---------------------|------------------|
|  customer_product   |     19265786     |
|---------------------|------------------|

所以我有一个很好的分区,但我不知道为什么? 各位大侠能不能给我解释一下这个问题?

我正在添加一些信息,希望能帮助您解决您的疑虑:

1. 像 5000 行还是 10000 行? 请问我们有机会知道吗?

根据Checking for data availability ,缓冲区是基于时间而不是基于大小的,数据可能需要长达 90 分钟才能可用。 此外,UNPARTITIONED 分区将包含与流缓冲区相关的所有数据; 所以,查询这个分区可以是知道缓冲区中有多少行的方法。

2. ...我一直等到我的数据用完流缓冲区(实际上我一直等到流缓冲区统计信息在我的表的详细信息中消失) 那么问题出在哪里?

可能存在同步问题,但我想知道您是如何确定流为空的。 Doc说需要“检查名为streamingBuffer的部分的tables.get响应”。 此外,streamingBuffer.oldestEntryTime 字段可用于标识流缓冲区中行的年龄。 如果服务尚未将数据提取到最终分区,则 UNPARTITIONED 分区存在是正确的。

3. 一个分区是好的,但我不知道为什么,好吗? 各位大侠能不能给我解释一下这个问题?

我同意张华的看法,当你在流式传输时,数据被缓冲在未分区的分区中,这就是为什么你只有那个分区(一段时间后,最多 90 分钟,数据将被传送到正确的分区)。 但是,当您将数据直接加载到表中时,行会立即发送到正确的分区 (19265786)。

您可能对BigQuery 流式插入的生活一文感兴趣,以阅读有关流式和分区表的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM