API хранилища Bigquery `to_arrow_iterable` возвращает только 8 строк за раз.Python

Программы на Python
Anonymous
API хранилища Bigquery `to_arrow_iterable` возвращает только 8 строк за раз.

Сообщение Anonymous »

У меня есть этот код для получения миллионов строк из результатов запроса BigQuery:

Код: Выделить всё

        query_job = client.query(
query,
)
storage_client = bigquery_storage.BigQueryReadClient()
rows = query_job.result(page_size=10000)
self._batch_arrow_iterator = rows.to_arrow_iterable(storage_client)
for batch in self._batch_arrow_iterator:
chunk_df: pl.DataFrame = pl.from_arrow(batch)
Но когда я запускаю это, каждая итерация итерируемого объекта возвращает только 8 строк за раз, что приводит к очень медленному извлечению. Я хотел бы, чтобы он давал не менее 1000 строк за раз. Аргумент page_size, по-видимому, полностью игнорируется клиентом.

Мне нужно сделать это с помощью итератора, поскольку я не могу хранить весь набор данных в памяти одновременно.
Это кажется странным, поскольку каждая строка состоит из примерно 40 столбцов float32, так что это тоже не безумно большой размер, поэтому мне интересно, что может регулировать API хранилища больших запросов, чтобы он возвращал только 8 строк за раз.
PS: Я попробовал без BigQueryReadClient, поэтому он прошел через REST API, тогда было еще хуже - 2 строки на итерацию.

Вернуться в «Python»