опция сжатия в fastparquet не соответствует - PullRequest
0 голосов
/ 23 января 2020

Согласно странице проекта fastparquet , fastparquet поддерживает различные методы сжатия

Необязательно (алгоритмы сжатия; gzip всегда доступен):

snappy (aka python-snappy)
lzo
brotli
lz4
zstandard

особенно zstandard - это современный алгоритм, который обеспечивает высокую скорость сжатия ios, а также впечатляющую быструю скорость сжатия / декомпрессии. И это то, что я хочу в fastparquet.

Но в do c из fastparquet.write

сжатие для применения к каждому столбцу, например, GZIP или SNAPPY или вхождения типа {"col1": "SNAPPY", "col2": нет} для указания типов сжатия для каждого столбца. В обоих случаях настройки компрессора будут основными настройками компрессора. Чтобы передать аргументы нижележащему компрессору, каждая запись dict сама должна быть словарем:

{
    col1: {
        "type": "LZ4",
        "args": {
            "compression_level": 6,
            "content_checksum": True
         }
    },
    col2: {
        "type": "SNAPPY",
        "args": None
    }
    "_default": {
        "type": "GZIP",
        "args": None
    }
}

Ничего не сказано о zstandard. Что еще хуже, если я напишу

fastparquet.write('outfile.parq', df, compression='LZ4')

Появляются ошибки о том, что

Сжатие 'LZ4' недоступно. Опции: ['GZIP', 'UNCOMPRESSED']

То есть fastparquest поддерживает только GZIP? Это довольно несоответствие со страницы проекта! Я пропускаю некоторые пакеты? Как использовать fastparquest со всем алгоритмом сжатия, указанным на странице проекта?

1 Ответ

1 голос
/ 23 января 2020

Да, возможно, вам не хватает некоторых пакетов. Ваша система должна сначала иметь привязки python LZ4 и / или zstandard. См. исходный код для получения более подробной информации.

  • Для LZ4: если import lz4.block дает ModuleNotFoundError, тогда go вперед и установите с pip install lz4 .

  • Аналогично для zstandard: pip install zstandard

  • И для brotli: pip install brotlipy

  • А также: pip install python-lzo

  • И мгновенно: pip install python-snappy

...