HDF5ExtError с использованием мультипроцессов Dask - PullRequest
0 голосов
/ 21 июня 2020

Я вычисляю среднее значение с помощью Dask для данных, которые я загрузил из здесь . В процессе практического использования в Dask я преобразовал файл csv в hdf5.

Я использую конфигурацию: версия Dask 2.19, Python 3.8, Pandas 1.0.5 и h5py 2.10. 0.

import dask.dataframe as dd
df_csv = dd.read_csv("2018_Yellow_Taxi_Trip_Data.csv", dtype={'DOLocationID': 'float64',
       'PULocationID': 'float64',
       'RatecodeID': 'float64',
       'passenger_count': 'float64',
       'payment_type': 'float64'})

# converting it to hdf5 format
df_csv.to_hdf(path_or_buf="2018_Yellow_Taxi_Trip_Data.h5", key="taxi_data",
              format="table")

Чтение hdf5 с использованием dask

filename = "2018_Yellow_Taxi_Trip_Data.h5"
temp_trip_data = dd.read_hdf(pattern=filename, key="taxi_data")

#getting passenger count from temp_trip_data
time_series = temp_trip_data["passenger_count"]

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

print(time_series.mean().compute())
1.5731398237126735

Изменение конфигурации для запуска в нескольких процессах

da.config.set(scheduler='processes')

получение среднего значения после установки расписания для процессов

print(time_series.mean().compute())

Выдается сообщение об ошибке: HDF5ExtError

Дополнительные сведения об ошибке
HDF5ExtError: HDF5 error back trace

  File "H5F.c", line 509, in H5Fopen
    unable to open file
  File "H5Fint.c", line 1400, in H5F__open
    unable to open file
  File "H5Fint.c", line 1615, in H5F_open
    unable to lock the file
  File "H5FD.c", line 1640, in H5FD_lock
    driver lock request failed
  File "H5FDsec2.c", line 941, in H5FD_sec2_lock
    unable to lock file, errno = 11, error message = 'Resource temporarily unavailable'

End of HDF5 error back trace

Unable to open/create file '2018_Yellow_Taxi_Trip_Data.h5'

Это кажется очень странным поведением. Есть идеи, почему это происходит? Что не так с Даском?

1 Ответ

0 голосов
/ 27 июня 2020

Один из подходов - не использовать HDF5, а вместо этого перейти на более современный формат, например Parquet.

...