相关疑难解决方法(0)

将数据从bigquery导出到Jupyter Notebook花费的时间太长

在Jupyter Notebook中,我正在尝试使用BigQuery服务器上的类似sql的查询从BigQuery导入数据。然后,我将数据存储在一个数据框中:

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="credentials.json"
from google.cloud import bigquery

sql = """
SELECT * FROM dataset.table
"""
client = bigquery.Client()
df_bq = client.query(sql).to_dataframe()
Run Code Online (Sandbox Code Playgroud)

数据的形状为(6000000,8),一旦存储在数据帧中,将使用约350MB的内存。

sql如果直接在BQ中执行查询,则大约需要2秒钟。

但是,通常需要大约30-40分钟的时间来执行上述代码,并且代码执行失败的可能性通常更高,并引发以下错误:

ConnectionError: ('Connection aborted.', OSError("(10060, 'WSAETIMEDOUT')",))
Run Code Online (Sandbox Code Playgroud)

总而言之,可能有三个错误原因:

  1. BigQuery服务器需要很长时间才能执行查询
  2. 传输数据需要很长时间(我不明白为什么350MB文件需要30分钟才能通过网络发送。我尝试使用LAN连接来消除服务器中断并最大程度地提高吞吐量,但这没有帮助)
  3. 使用BigQuery中的数据设置数据框需要花费很长时间

希望对问题有任何见解,在此先感谢!

python dataframe google-bigquery jupyter jupyter-notebook

5
推荐指数
2
解决办法
387
查看次数