polars.LazyFrame.sink_batches
-
Выполняет запрос и вызывает пользовательскую функцию для каждого готового пакета.
В некоторых случаях это позволяет передавать потоком результаты, размер которых превышает объём оперативной памяти.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без того, чтобы это считалось несовместимым изменением.
Предупреждение
Этот метод работает намного медленнее, чем встроенные приёмники. Используйте его только в том случае, если иначе реализовать вашу логику невозможно.
- Параметры:
-
- function
-
Функция, вызываемая для готового пакета. Если функция возвращает
True, это означает, что больше результаты не нужны, что позволяет досрочно остановить выполнение. - chunk_size
-
Количество строк, которые накапливаются до вызова функции обратного вызова.
- maintain_order
-
Сохранять порядок обработки данных. Если задать
False, выполнение будет немного быстрее. - lazy: bool
-
Ожидать вызова
collectперед началом выполнения. - engine
-
Выбрать движок для обработки запроса (по умолчанию
"auto"). Также можно передать экземплярEngine. Поддерживаются следующие имена движков:-
"auto": использовать движок, заданный с помощьюConfig.set_engine_affinityили переменной окруженияPOLARS_ENGINE_AFFINITY; если она не задана, используется"streaming". -
"in-memory": использовать перед записью движок, работающий в памяти; это движок по умолчанию. -
"streaming": использовать потоковый движок, который обрабатывает запросы пакетами, снижая нагрузку на память и часто превосходя по производительности движок, работающий в памяти. Вскоре он станет движком Polars по умолчанию. -
"gpu": использовать графический процессор CUDA (требуется графический процессор Nvidia иcudf-polars). Для более точной настройки передайте объектGPUEngine.
Если выбранный движок не может выполнить запрос, Polars переключается на потоковый движок.
-
- optimizations
-
Этапы оптимизации, выполняемые при оптимизации запроса.
Не влияет на выполнение, если для
lazyзадано значениеTrue.
Примеры
>>> lf = pl.scan_csv("/path/to/my_larger_than_ram_file.csv") >>> lf.sink_batches(lambda df: print(df))
LazyFrame.sink_batches(
function: Callable[[DataFrame],
bool | None],
*,
chunk_size: int | None = None,
maintain_order: bool = True,
lazy: bool = False,
engine: EngineType = 'auto',
optimizations: QueryOptFlags = (,
), ) → LazyFrame | None
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/lazyframe/api/polars.LazyFrame.sink_batches.html