簡體   English   中英

通過bigquery-python庫向BigQuery插入大量數據

[英]Insert large amount of data to BigQuery via bigquery-python library

我有大型csv文件和excel文件,我在其中讀取它們並根據它具有的字段和類型動態創建所需的創建表腳本。 然后將數據插入到創建的表中。

我已經讀過這篇文章並理解我應該使用jobs.insert()而不是tabledata.insertAll()來發送大量數據。

這就是我所說的(適用於較小的文件而不是大文件)。

result  = client.push_rows(datasetname,table_name,insertObject) # insertObject is a list of dictionaries

當我使用庫的push_rows時,它會在Windows中出現此錯誤。

[Errno 10054] An existing connection was forcibly closed by the remote host

這在ubuntu中。

[Errno 32] Broken pipe

因此,當我使用BigQuery-Python代碼時,它使用table_data.insertAll()

我怎么能用這個庫做這個? 我知道我們可以上傳谷歌存儲,但我需要直接上傳方法。

處理大文件時不使用流式傳輸,而是批量加載:流式傳輸每秒最多可處理100,000行。 這對於流式傳輸非常有用,但不適用於加載大型文件。

鏈接的示例代碼正在做正確的事情(批量而不是流式傳輸),所以我們看到的是另一個問題:此示例代碼試圖將所有這些數據直接加載到BigQuery中,但是通過POST部分上傳失敗。 gsutil具有比純普通POST更強大的上傳算法。

解決方案:不是通過POST加載大塊數據,而是先將它們放入Google雲端存儲,然后告訴BigQuery從GCS讀取文件。

另請參閱BigQuery腳本失敗的大文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM