Я начал изучать и внедрять Polars из-за (1) потенциального улучшения скорости и (2) из-за обещания иметь возможность обрабатывать наборы данных, превышающие объем памяти. Однако я изо всех сил пытаюсь понять, как на самом деле выполняется второе обещание в конкретных сценариях, которые требуются для моего варианта использования.
Один конкретный пример, с которым я борюсь, — это как читать мульти- GB JSONL из S3, примените несколько преобразований и отправьте измененные записи в STDOUT.
Пробелы в ленивых методах "приемника"...Как я только что рассказал на GitHub, методы мойки_*() не поддерживают запись в буфер или файловый режим — только по именованному пути к файлу. В противном случае кажется, что простым решением было бы что-то вроде мойки_ndjson(sys.stdout, ...)
Нет четкого способа «пакетной обработки» DataFrame или LazyFrame на меньшие фреймы данных.
Следующее, что я попробовал, — это получить меньшие пакеты или фреймы данных (например, по 100 тысяч строк за раз), которые я мог бы обрабатывать в памяти и записывать. с write_ndjson(sys.stdout, ...) по одному, пока не достигну конца потока.
Ближе всего я смог найти LazyFrame.slice(offset , Batch_size).collect() - за исключением того, что на практике это, похоже, зависает/падает при первом вызове, а не читает только первые n записей и затем продолжает работу. Даже когда я установил небольшое количество записей в пределе сканирования схемы LazyFrame. Возможно, это ошибка, но, тем не менее, метод среза(), похоже, не предназначен специально для получения дополнительных пакетов из ленивого кадра.
Любая помощь будет очень признательна!
Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-polars
Правильный способ обработки наборов данных размером больше памяти в Polars ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение