2017-04-10 15 views
3

BigQueryテーブルに大きなデータセット(〜45M行、13Gbのデータ)があります。 Google Datalab Notebookでそのデータを処理して、Datalabセルのmatplotlibで後でデータを視覚化するためのパンダの基本統計を作成したいと思います。私はパンダのDataframeにすべてのデータセットをロードしようとするのは良い考えではないと思います(少なくとも私はRAMの問題を抱えています)。BigQueryのデータのバッチをDatalabに読み込む

BigQueryのデータをバッチ(たとえば10K行)で読み込んでDatalabで消費することはできますか?

ありがとうございます!

答えて

3

データを視覚化することを目的としている場合は、小さなバッチを読み込むよりもサンプリングが良いでしょうか?

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() 

あるいは、使用便利クラス:

from google.datalab.ml import BigQueryDataSet 
sampled_df = BigQueryDataSet(table='myds.mytable').sample(1000) 
+0

@BradleyJiangをサンプリングしていただきありがとうございました。しかしここで私は時系列データを扱っており、サブサンプリングは時系列の線を破壊するでしょう。 BigQueryから一括読み取りする方法が見つからない場合は、元のCSVファイルに移動して、行を一括して読み込む必要があります。 –

+0

それでは時間単位でソートし、ページ単位でクエリを実行する方法はありますか? BQ Q = bq.Query( '時間によってmyds.mytable順序SELECT * FROM') T = q.execute()。結果() t.to_dataframe(START_ROW = PAGE_START、として インポートgoogle.datalab.bigquery max_rows = page_size) –

2

は、あなただけのテーブルを反復処理しようとしたことがあり

次のようなあなたのデータをサンプリングすることができますか? Tableオブジェクトは、paged fetcherを使用してBigQueryテーブルからデータを取得するイテラブルであり、ある方法でストリーミングしています。ページサイズはデフォルトで1024です。

関連する問題