polars.LazyFrame.sink_parquet
-
Вычислить запрос в потоковом режиме и записать результат в файл Parquet.
Это позволяет записывать на диск потоковые результаты, размер которых превышает объём оперативной памяти.
- Параметры:
-
- path
-
Путь к файлу, в который следует записать данные.
-
compression{‘lz4’, ‘uncompressed’, ‘snappy’, ‘gzip’, ‘brotli’, ‘zstd’} -
Выберите “zstd” для эффективного сжатия. Выберите “lz4” для быстрого сжатия и распаковки. Выберите “snappy”, если при работе со старыми средствами чтения Parquet важна обратная совместимость.
- compression_level
-
Уровень сжатия. Чем выше уровень сжатия, тем меньше размер файлов на диске.
- “gzip” : мин. уровень: 0, макс. уровень: 9, по умолчанию: 6.
- “brotli” : мин. уровень: 0, макс. уровень: 11, по умолчанию: 1.
- “zstd” : мин. уровень: 1, макс. уровень: 22, по умолчанию: 3.
- statistics
-
Записывать статистику в заголовки Parquet. Это поведение используется по умолчанию.
Возможные значения:
-
True: включить стандартный набор статистики (по умолчанию). Некоторые виды статистики могут быть отключены. -
False: отключить всю статистику - “full”: вычислить и записать всю доступную статистику.
-
{ "statistic-key": True / False, ... }. Доступные ключи:- “min”: минимальное значение столбца (по умолчанию:
True) - “max”: максимальное значение столбца (по умолчанию:
True) - “distinct_count”: количество уникальных значений столбца (по умолчанию:
False) - “null_count”: количество нулевых значений в столбце (по умолчанию:
True)
- “min”: минимальное значение столбца (по умолчанию:
-
- row_group_size
-
Размер групп строк в количестве строк. Если значение равно None (по умолчанию), используются чанки
DataFrame. Запись небольшими чанками может снизить нагрузку на память и увеличить скорость записи. - data_page_size
-
Ограничение размера отдельных страниц данных. Если значение не задано, по умолчанию используется 1024 * 1024 байт.
- maintain_order
-
Сохранять порядок обработки данных. Если установить значение
False, обработка будет немного быстрее.Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без уведомления о нарушении обратной совместимости.
- storage_options
-
Параметры, определяющие способ подключения к облачному провайдеру.
В настоящее время поддерживаются облачные провайдеры AWS, GCP и Azure. Список поддерживаемых ключей:
- aws
- gcp
- azure
- Hugging Face (
hf://): принимает ключ API в параметреtoken:{'token': '...'}либо через переменную окруженияHF_TOKEN.
Если
storage_optionsне задан, Polars попытается получить необходимые сведения из переменных окружения. - credential_provider
-
Функция, которая предоставляет учётные данные для облачного хранилища. Функция должна возвращать словарь с ключами учётных данных и, при необходимости, сроком их действия.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без уведомления о нарушении обратной совместимости.
- retries
-
Количество повторных попыток при сбое доступа к облачному экземпляру.
Устарело с версии 1.37.1: Вместо этого передайте {“max_retries”: n} через
storage_options. - sync_on_close: { None, ‘data’, ‘all’ }
-
Синхронизировать данные с диском перед закрытием файла.
-
Noneне выполняет синхронизацию. -
dataсинхронизирует содержимое файла. -
allсинхронизирует содержимое файла и метаданные.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без уведомления о нарушении обратной совместимости.
-
- metadata
-
Словарь или функция обратного вызова для добавления пар «ключ — значение» в метаданные файла Parquet.
Предупреждение
Эта функциональность считается экспериментальной. Она может быть удалена или изменена в любой момент без уведомления о нарушении обратной совместимости.
- arrow_schema
-
Пользовательская схема Arrow для записи в файл. Это позволяет задавать пользовательскую схему и метаданные на уровне полей. Имена и типы данных должны совпадать.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без уведомления о нарушении обратной совместимости.
- mkdir: bool
-
Рекурсивно создать все каталоги, указанные в пути.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без уведомления о нарушении обратной совместимости.
- lazy: bool
-
Отложить запуск выполнения до вызова
collect.Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без уведомления о нарушении обратной совместимости.
- engine
-
Выбрать движок для обработки запроса (по умолчанию
"auto"). Также можно передать экземплярEngine. Поддерживаются следующие имена движков:-
"auto": использовать движок, заданный с помощьюConfig.set_engine_affinityили переменной окруженияPOLARS_ENGINE_AFFINITY; если ни один из них не задан, использовать"streaming". -
"in-memory": использовать перед записью движок, работающий в оперативной памяти; это движок по умолчанию. -
"streaming": использовать потоковый движок, который обрабатывает запросы пакетами, снижая нагрузку на память и зачастую превосходя по скорости движок, работающий в оперативной памяти. Вскоре он станет движком Polars по умолчанию. -
"gpu": использовать движок CUDA для GPU (требуется GPU Nvidia иcudf-polars). Для детальной настройки передайте объектGPUEngine.
Если выбранный движок не может выполнить запрос, Polars переключается на потоковый движок.
-
- optimizations
-
Этапы оптимизации, выполняемые при оптимизации запроса.
Не влияет на результат, если для
lazyзадано значениеTrue.Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без уведомления о нарушении обратной совместимости.
- sinked_paths_callback
-
Функция обратного вызова, которой передаются сведения о путях, куда записаны данные.
Предупреждение
Эта функциональность считается нестабильной. Она может быть изменена в любой момент без уведомления о нарушении обратной совместимости.
- Возвращает:
-
- DataFrame
См. также
Примеры
>>> lf = pl.scan_csv("/path/to/my_larger_than_ram_file.csv") >>> lf.sink_parquet("out.parquet")Запись в объект
BytesIO.>>> import io >>> buf = io.BytesIO() >>> pl.LazyFrame({"x": [1, 2, 1]}).sink_parquet(buf)Разделение на разделы в стиле разбиения Hive:
>>> pl.LazyFrame({"x": [1, 2, 1], "y": [3, 4, 5]}).sink_parquet( ... pl.PartitionBy("./out/", key="x"), ... mkdir=True ... )
LazyFrame.sink_parquet(
path: str | Path | IO[bytes] | PartitionBy,
*,
compression: ParquetCompression = 'zstd',
compression_level: int | None = None,
statistics: bool | str | dict[str,
bool] = True,
row_group_size: int | None = None,
data_page_size: int | None = None,
maintain_order: bool = True,
storage_options: StorageOptionsDict | None = None,
credential_provider: CredentialProviderFunction | Literal['auto'] | None = 'auto',
retries: int | None = None,
sync_on_close: SyncOnCloseMethod | None = None,
metadata: ParquetMetadata | None = None,
arrow_schema: ArrowSchemaExportable | None = None,
mkdir: bool = False,
lazy: bool = False,
engine: EngineType = 'auto',
optimizations: QueryOptFlags = (,
), sinked_paths_callback: SinkedPathsCallback | None = None, ) → LazyFrame | None
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/api/polars.LazyFrame.sink_parquet.html