将批量数据从 BigQuery 读取到 Datalab
Reading batches of data from BigQuery into Datalab
我在 BigQuery 中有一个大数据集 table(约 4500 万行,13Gb 数据)。我想在我的 Google Datalab Notebook 中处理该数据,以使用 pandas 进行一些基本统计,以便稍后在 Datalab 单元格中使用 matplotlib 可视化数据。我认为尝试将所有数据集加载到 pandas' Dataframe 不是一个好主意(至少我会有 RAM 问题)。
是否可以从 BigQuery 中批量读取数据(例如 10K 行)以在 Datalab 中使用它?
提前致谢!
如果您的目的是可视化数据,抽样会比加载小批量更好吗?
您可以对数据进行采样,例如:
import google.datalab.bigquery as bq
df = bq.Query(sql='SELECT image_url, label FROM coast.train WHERE rand() < 0.01').execute().result().to_dataframe()
或者,一个使用方便class:
from google.datalab.ml import BigQueryDataSet
sampled_df = BigQueryDataSet(table='myds.mytable').sample(1000)
您是否尝试过遍历 table? Table
对象是一个可迭代对象,它使用 paged fetcher 从 BigQuery table 获取数据,它以某种方式流式传输。页面大小默认为1024。
我在 BigQuery 中有一个大数据集 table(约 4500 万行,13Gb 数据)。我想在我的 Google Datalab Notebook 中处理该数据,以使用 pandas 进行一些基本统计,以便稍后在 Datalab 单元格中使用 matplotlib 可视化数据。我认为尝试将所有数据集加载到 pandas' Dataframe 不是一个好主意(至少我会有 RAM 问题)。
是否可以从 BigQuery 中批量读取数据(例如 10K 行)以在 Datalab 中使用它?
提前致谢!
如果您的目的是可视化数据,抽样会比加载小批量更好吗?
您可以对数据进行采样,例如:
import google.datalab.bigquery as bq
df = bq.Query(sql='SELECT image_url, label FROM coast.train WHERE rand() < 0.01').execute().result().to_dataframe()
或者,一个使用方便class:
from google.datalab.ml import BigQueryDataSet
sampled_df = BigQueryDataSet(table='myds.mytable').sample(1000)
您是否尝试过遍历 table? Table
对象是一个可迭代对象,它使用 paged fetcher 从 BigQuery table 获取数据,它以某种方式流式传输。页面大小默认为1024。