2016-01-11 2 views
0

Возможно ли получить большие наборы данных в панда DataFrame?Получение больших наборов данных в облако Datalab

Мой набор данных составляет ок. 1,5 Гб несжатого (вход для кластеризации), но когда я пытаюсь выбрать содержимое таблицы с помощью bq.Query(...) он бросает исключение:

RequestException: Response too large to return. Consider setting allowLargeResults to true in your job configuration. For more information, see https://cloud.google.com/bigquery/troubleshooting-errors 

Глядя на https://cloud.google.com/bigquery/querying-data?hl=en которой,

Вы должны указать таблица назначения.

Похоже, что единственное место, где можно отправлять большие запросы, - это другая таблица (а затем нажмите «Экспорт в GCS» и загрузить).

Там будет также (возможно большой обратной записи) в качестве объявления строки записываются обратно в базу данных.

Тот же набор данных прекрасно работает на моем 16Gb Laptop (несколько минут), но я смотрю на переход на DATALAB как наши движения данных в облаке.

Большое спасибо, любая помощь оценили

ответ

1

Если у вас уже есть свои результаты в таблице, вы можете просто использовать Table.to_dataframe()

В противном случае вам нужно будет выполнить запрос с помощью выполнения() с указанным вами именем таблицы назначения, а также allow_large_results = True (после этого вы можете выполнить вызов to_dataframe(), как указано выше).

Обратите внимание, что вы можете иметь проблемы с этим; VM по умолчанию, которая запускает ядро ​​Python, довольно проста. Вы можете развернуть более мощную виртуальную машину с использованием параметров URL; например .:

В то же время, как уже упоминалось вы можете развернуть DATALAB на большую виртуальную машину по некоторым параметрам URL. Например:

http://datalab.cloud.google.com?cpu=2&memorygb=16 
+0

Спасибо. То, что найдено, это Table.to_dataframe() работает, но, похоже, не возвращается, а панель прогресса/загрузки на экране некоторое время. Я сравнил это с ручным экспортом через веб-интерфейс BQ в gzipped CSV в облачном хранилище Google, который загружал 4m + строки в pandas DataFrame за считанные секунды (с 16-гигабайтным экземпляром, как было предложено). – Chris

+0

Да, Table.to_dataframe() не будет очень быстрым; он выполняет чтение каждой строки таблицы в Python, анализирует ее и создает словарь Python и, наконец, берет список словарей и создает фрейм данных, что много работы Python для каждой строки данных. Вы можете использовать Table.extract в Datalab для экспорта в GCS, который выполняется без ядра Python, который должен действовать как посредник, а затем использовать объект GCS, как вы упомянули. –

+0

* Table.extract работал * Я ценю Datalab в бета-версии и иметь обратную связь, если полезно - 1. Я получил исключения с 'работы не found', когда я был BigQuery в различных проектах (поэтому чтение из project1: Dataset.Table к project2: gs: // some-bucket), потому что Datalab сейчас недоступен в ЕС, поэтому мне нужен второй проект. Использование одного проекта для решения всех этих исключений. 2. Пользовательский интерфейс в DataLab по-прежнему показывает поле «Запуск», хотя файл написан в GCS и может быть прочитан в другом ноутбуке. Большое спасибо за Вашу помощь. – Chris

Смежные вопросы