2017-04-10 2 views
3

Ich habe ein großes Dataset in der BigQuery-Tabelle (~ 45 M Zeilen, 13 GB Daten). Ich möchte diese Daten in meinem Google Datalab Notebook verarbeiten, um einige grundlegende Statistiken mit Pandas zu erstellen, um Daten später mit Matplotlib in Datalab Zelle zu visualisieren. Ich denke, es ist keine gute Idee zu versuchen, den gesamten Datensatz in Pandas 'Dataframe zu laden (zumindest werde ich RAM-Probleme haben).Lesen von Datensätzen aus BigQuery in Datalab

Ist es möglich, Daten aus BigQuery in Batches (etwa 10K Zeilen) zu lesen, um sie in Datalab zu verwenden?

Vielen Dank im Voraus!

Antwort

3

Wenn es Ihr Zweck ist, die Daten zu visualisieren, wäre das Sampling besser als das Laden einer kleinen Charge?

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

Oder eine Verwendung bequem Klasse:

Sie können Ihre Daten wie Proben

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

Danke für die Idee mit Sampling @BradleyJiang, könnte es hilfreich sein! Aber hier arbeite ich mit chronologischen Daten und Subsampling wird zeitlich geordnete Linien zerstören. Wenn ich keine Methode zum Batch-Lesen von BigQuery finde, muss ich wahrscheinlich zur ursprünglichen CSV-Datei gehen und Zeilen in einem Batch lesen. –

+0

Wie wäre es dann, sie nach Zeit zu sortieren und dann nach Seiten abzufragen? import google.datalab.bigquery als bq q = bq.Query ('select * from myds.mytable Sortieren nach Zeit') t = q.execute(). Ergebnis() t.to_dataframe (start_row = PAGE_START, max_rows = Seitengröße) –

2

Haben Sie versucht, nur über den Tisch laufen? Das Objekt Table ist ein iterabler Wert, der paged fetcher verwendet, um Daten aus der BigQuery-Tabelle abzurufen. Die Seitengröße ist standardmäßig 1024.

Verwandte Themen