2

當使用BigQuery Connector從BigQuery中讀取數據時,我發現它首先將所有數據複製到Google Cloud Storage。然後將這些數據並行讀入Spark,但在讀取大表時,複製數據階段需要很長時間。那麼是否有更高效的方式將BigQuery中的數據讀入Spark?以有效的方式從BigQuery讀取Spark到Spark中?

另一個問題:從BigQuery中讀取2個階段(複製到GCS,從GCS並行讀取)。受Spark集羣大小影響的複製階段還是需要固定的時間?

+1

我更新了第二部分的答案。 –

回答

3

也許Google員工會糾正我,但AFAIK是唯一的方法。這是因爲引擎蓋下該機還採用了BigQuery的連接器Hadoop的,這accordng到docs

根據BigQuery連接器,用於Hadoop的數據下載到運行在Hadoop作業之前谷歌Cloud Storage桶..

作爲一個方面說明,在使用Dataflow時也是如此 - 它也會先執行BigQuery表格的導出到GCS,然後並行讀取它們。

WRT複製階段(實質上是一個BigQuery導出作業)是否受Spark集羣大小的影響,或者它是否爲固定時間 - 不是。 BigQuery導出作業不確定,BigQuery使用自己的資源導出到GCS,即不是Spark羣集。

+0

嘿,我在BigQuery中有3.83TB表。我正在嘗試使用spark連接器在Bigquery中的此表上連接Spark,但它顯示等待很長時間(10-15分鐘)後沒有創建分片文件。 它預計會長時間閒置。我能夠使用相同的連接器讀取小表。 –