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 строки на итерацию.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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