Dask Dataframe "ValueError: Данные сжимаются как snappy, но у нас это не установлено" - PullRequest
0 голосов
/ 15 мая 2018

python-snappy, похоже, установлен - Dask возвращает ValueError.

Шлем Конфиг для юпитера и рабочих:

env:
  - name: EXTRA_CONDA_PACKAGES
    value: numba xarray s3fs python-snappy pyarrow ruamel.yaml -c conda-forge
  - name: EXTRA_PIP_PACKAGES
    value: dask-ml --upgrade

В контейнерах отображается python-snappy (через список conda)

Фрейм данных загружается из файла составного паркета, созданного Apache Drill:

files = ['s3://{}'.format(f) for f in fs.glob(path='{}/*.parquet'.format(filename))]
df = dd.read_parquet(files)

Выполнение len(df) на фрейме данных возвращает:

distributed.utils - ERROR - Data is compressed as snappy but we don't have this installed
Traceback (most recent call last):
  File "/opt/conda/lib/python3.6/site-packages/distributed/utils.py", line 622, in log_errors
    yield
  File "/opt/conda/lib/python3.6/site-packages/distributed/client.py", line 921, in _handle_report
    six.reraise(*clean_exception(**msg))
  File "/opt/conda/lib/python3.6/site-packages/six.py", line 692, in reraise
    raise value.with_traceback(tb)
  File "/opt/conda/lib/python3.6/site-packages/distributed/comm/tcp.py", line 203, in read
    msg = yield from_frames(frames, deserialize=self.deserialize)
  File "/opt/conda/lib/python3.6/site-packages/tornado/gen.py", line 1099, in run
    return
  File "/opt/conda/lib/python3.6/site-packages/tornado/gen.py", line 315, in wrapper
    future.set_result(_value_from_stopiteration(e))
  File "/opt/conda/lib/python3.6/site-packages/distributed/comm/utils.py", line 75, in from_frames
    res = _from_frames()
  File "/opt/conda/lib/python3.6/site-packages/distributed/comm/utils.py", line 61, in _from_frames
    return protocol.loads(frames, deserialize=deserialize)
  File "/opt/conda/lib/python3.6/site-packages/distributed/protocol/core.py", line 96, in loads
    msg = loads_msgpack(small_header, small_payload)
  File "/opt/conda/lib/python3.6/site-packages/distributed/protocol/core.py", line 171, in loads_msgpack
    " installed" % str(header['compression']))
ValueError: Data is compressed as snappy but we don't have this installed

Может кто-нибудь предложить правильную конфигурацию здесь или шаги по исправлению?

1 Ответ

0 голосов
/ 15 мая 2018

Эта ошибка на самом деле не возникает из-за чтения ваших файлов паркета, а из-за того, как Dask сжимает данные между машинами.Возможно, вы можете решить эту проблему, установив или не установив python-snappy последовательно на все ваши клиентские / планировщики / рабочие модули.

Вы должны выполнить одно из следующих действий:

  1. Удалить python-snappy из списка пакетов conda для ваших модулей jupyter и worker.Если вы используете pyarrow, то в этом нет необходимости, я считаю, что Arrow включает snappy на уровне C ++.
  2. Добавьте python-snappy к вашему scheduler pod

FWIWЯ лично рекомендую lz4 для межмашинного сжатия сверх snappy.

...