2015-11-19 96 views
3

我發現一對夫婦相關的問題,但是從谷歌團隊沒有明確的答案,對於這個特殊的問題:數據流至BigQuery配額

是雲數據流的工作,寫的BigQuery,僅限於100K行的BigQuery配額每秒每秒(即BQ流限制)?

google dataflow write to bigquery table performance

Cloud DataFlow performance - are our times to be expected?


編輯: 的主要動機是爲了找到一種方法來預測各種輸入大小的運行時間。

我已經設法運行通過Dataflow監視UI顯示> 180K行/秒的作業。但是我不確定這是否會被插入到表格中,因爲作業運行時間比原始計算慢了約2倍(500mm行/ 180k行/秒= 45分鐘,實際上花了近2小時)

回答

6

從您的消息來看,這聽起來像是您正在批量執行您的管道,而不是流模式。

在批處理模式中,在Google Cloud Dataflow服務上運行的作業不使用BigQuery的流式寫入。相反,我們將所有要導入的行寫入GCS上的文件,然後調用BigQuery load" job。請注意,這會降低您的成本(加載作業比流式寫入更便宜),並且總體效率更高(BigQuery在執行批量加載時比執行每行導入時更快)。權衡是在整個作業成功完成之前,BigQuery中沒有結果可用。

加載作業不受特定行數/秒的限制,而是受限於daily quotas

在數據流模式中,Dataflow確實使用BigQuery的流式寫入。在這種情況下,每秒100,000行的限制將適用。如果超出該限制,Dataflow將會收到quota_exceeded錯誤,然後將重試失敗的插入。此行爲將有助於消除暫時超過BigQuery配額的短期高峯;如果您的管道長時間超過配額,則此失敗重試策略最終將作爲反壓的一種形式,從而降低管道運行速度。

-

至於爲什麼你的工作花了45分鐘2小時,而不是,你的工作將有連續進行多個階段,因此使用最快的階段吞吐量不估計最終的準確的方法到終端運行時。例如,直到Dataflow完成將所有行寫入GCS之後,纔會啓動BigQuery加載作業。您的費率似乎合理,但如果您懷疑性能下降,請跟進。

+1

是的 - 只是想確認我們正在批處理模式下運行作業,並且時間與手動腳本GCS + BQ加載作業一致。感謝您的詳細解釋 - 非常有幫助! –