0

我想將大量數據插入到Google雲端Spanner表中。將大數據插入雲端Spanner表

這就是我正在做的與node.js應用程序,但它停止,因爲txt文件太大(近2GB)。

1.load txt文件通過線

2.read線

3.split行通過 「|」

4.build數據對象

5.insert數據雲扳手錶

MySQL支持與SQL文件數據插入。 Cloud Spanner是否也支持某種方式?

回答

1

Cloud Spanner當前不公開批量導入方法。這聽起來像你計劃單獨插入每一行,這不是最理想的方法。該文檔有最好的(和壞的)做法efficient bulk loading

要獲取大容量裝載最佳寫入吞吐量,通過 主鍵這種模式分割你的數據:

每個分區都包含一系列連續的行。每個提交 僅包含一個分區的數據。對於 來說,一個好的經驗法則是您的分區數量是您的Cloud Spanner實例中節點數量的10倍。因此,如果您有N個節點,總共有10 * N 分區,您可以按以下方式將行分配給分區:

按主鍵對數據進行排序。將其分成10 * N分開的 部分。創建一組上傳數據的工作任務。每個 工作人員將寫入一個分區。在分區內,建議您的工作人員按順序寫入行,建議使用 。但是,在分區內隨機寫入數據也應該提供合理的高吞吐量。

隨着您的更多數據上傳,Cloud Spanner會自動分割 並重新平衡您的數據,以平衡您實例中節點上的負載。在此過程中,您可能會遇到吞吐量暫時下降的問題。

遵循這種模式,您應該看到每個節點每秒10-20 MiB的最大整體批量寫入吞吐量。

它也看起來像你試圖在處理前將整個大文件加載到內存中。對於大文件,你應該看看加載和處理塊,而不是整個事情。我注意到一位Node專家,但是您應該嘗試將其作爲流讀取,而不是將所有內容都保存在內存中。