簡體   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