小编Max*_*fnv的帖子

将数据从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
查看次数

BigQuery为什么会突然抛出数据格式错误

以下查询突然停止工作:

SELECT
  CAST((SELECT up.value.string_value FROM UNNEST(user_properties) up WHERE key = "user_id") AS INT64) AS user_id,
  (TIMESTAMP_MILLIS(CAST(event_timestamp/1000 AS INT64))) AS event_date
`firebase.dataset.events_*`
Run Code Online (Sandbox Code Playgroud)

错误如下:

bad int64 value:
Run Code Online (Sandbox Code Playgroud)

该查询几个月以来一直运行良好,今天发生了一些事情导致此错误。有没有人有同样的问题?问题可能出在我们的数据中吗?这可能是 GCP 方面的临时问题吗?谢谢!

sql firebase google-bigquery

2
推荐指数
1
解决办法
3149
查看次数