Использование блочного сжатия в пандах вызывает повреждение кучи

Я использую Pandas некоторое время, но я новичок в HDF5, поэтому я пытаюсь изучить его и преобразовать некоторые из моих файлов данных исследований в файлы HDF5. Я просмотрел кучу сообщений SO о python и HDF5, и меня интересует использование алгоритма сжатия BLOSC (мы делаем много вычислений с наборами данных, поэтому скорость чтения/записи имеет более высокий приоритет, чем размер хранилища).

При использовании pandas.to_hdf у меня возникли проблемы с библиотекой сжатия blosc. Когда я использую blosc, python падает, и когда я открываю отладку в Visual Studio 2010, я получаю

Необработанное исключение по адресу 0x00007ffcd59fa28c в python.exe: 0xC0000374: куча повреждена.

Я создал отдельный пример в сценарии и получаю ту же проблему:

import pandas as pd

test = pd.DataFrame()
test['random1'] = np.random.randn(1000000)
test['random2'] = np.random.randn(1000000)
test['random3'] = np.random.randn(1000000)

# Write out a csv first to compare file sizes
test.to_csv('./examples/data/random_3c.csv')

# Write out using different compression algorithms to compare
test.to_hdf('./examples/data/random_3c_zlib.h5',
            key='Random_3Col', mode='w', format='table', 
            append=False, complevel=9, complib='zlib', fletcher32=True)

test.to_hdf('./examples/data/random_3c_blosc.h5',
            key='Random_3Col', mode='w', format='table', 
            append=False, complevel=9, complib='blosc', fletcher32=True)

CSV записывает нормально (размер файла 65 217 КБ)
Сжатие zlib записывает нормально (размер файла 21 719 КБ)
сжатие blosc приводит к сбою ядра, и я получаю сообщение о повреждении кучи, когда открываю отладку в VS
Моя версия pandas – 0.16.2
Моя версия PyTables – 3.2.0
Я также установил hdf5 из hdfgroup
И я работаю на машине с Windows

На данный момент я даже не совсем уверен, как начать отслеживать причину сбоя. Любые предложения или кто-нибудь видел это раньше? Я обнаружил несколько случаев, когда у людей возникали проблемы с SO при попытке использовать внешнюю библиотеку blosc, но я еще не приблизился к этому. Я полагаю, что сначала я получу основы! Насколько я знаю, pandas использует pytables, который поставляется в комплекте с версией blosc.

Спасибо!


person Tyler Acorn    schedule 01.10.2015    source источник
comment
Та же проблема здесь, я сообщил об ошибке на github.com/pydata/pandas/issues/11266   -  person xgdgsc    schedule 09.10.2015


Ответы (1)


Если вы используете дистрибутив anaconda, это проблема сборки пакета: Pytables 3.2, python 3.4 под Windows x64 · Проблема № 458 · Проблемы ContinuumIO/anaconda. Можно смотреть и ждать исправления.

person xgdgsc    schedule 09.10.2015
comment
Спасибо @xgdgsc! Я понизил версию pytables до 3.1.1, и сжатие блоков работает. Я наблюдаю за этой проблемой и жду исправления. - person Tyler Acorn; 10.10.2015