0

我创建了一个多索引 .h5 文件并使用 HDFStore 来存储数据。但是,当我尝试从文件中读取数据帧时,事实证明我可以成功读取一些数据帧,但无法读取其他几个数据帧。以下是我收到的错误消息:

HDF5-DIAG:在 HDF5 (1.8.9) 线程 0 中检测到错误:#000:H5Dread() 中的 H5Dio.c 第 174 行:无法读取数据主要:数据集次要:读取失败

#001:H5D_read() 中的 H5Dio.c 第 449 行:无法读取数据主要:数据集次要:读取失败

#002:H5D_contig_read() 中的 H5Dcontig.c 第 560 行:连续读取失败主要:数据集次要:读取失败

#003:H5D_select_read() 中的 H5Dselect.c 第 275 行:读取错误主要:数据空间次要:读取失败

#004:H5D_select_io() 中的 H5Dselect.c 第 210 行:读取错误主要:数据空间次要:读取失败

#005:H5D_contig_readvv() 中的 H5Dcontig.c 第 890 行:无法执行矢量化筛缓冲区读取主要:数据集次要:无法对对象进行操作

#006:H5V_opvv() 中的 H5V.c 第 1457 行:无法执行操作 主要:内部错误(太具体,无法详细说明) 次要:无法对对象进行操作

#007:H5D_contig_readvv_sieve_cb() 中的 H5Dcontig.c 第 691 行:块读取失败主要:数据集次要:读取失败

#008:H5F_block_read() 中的 H5Fio.c 第 113 行:读取元数据累加器失败主要:低级 I/O 次要:读取失败

#009:H5F_accum_read() 中的 H5Faccum.c 第 254 行:驱动程序读取请求失败主要:低级 I/O 次要:读取失败

#010:H5FD_read() 中的 H5FDint.c 第 142 行:驱动程序读取请求失败主要:虚拟文件层次要:读取失败

#011:H5FD_sec2_read() 中的 H5FDsec2.c 第 753 行:文件读取失败:时间 = 2013 年 7 月 3 日星期三 14:07:31

, 文件名 = 'N.h5', 文件描述符 = 3, errno = 5, 错误消息 = '输入/输出错误', buf = 0x7f8807fccb6c, 大小 = 649492, 偏移量 = 185876480

major: Low-level I/O

minor: Read failed

回溯(最近一次通话最后):

文件“”,第 1 行,在

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第 165 行,在getitem

return self.get(key)

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第 261 行,在 get

return self._read_group(group)

_read_group 返回处理程序(组,位置)中的文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第 651 行

_read_frame 中的文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第 400 行,返回 DataFrame(self._read_block_manager(group))

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第 426 行,在 _read_block_manager ax = self._read_index(group, 'axis%d' % i)

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第 487 行,在 _read_index _,index = self._read_index_node(getattr(group, key))

文件“/usr/share/python27/lib/python2.7/site-packages/pandas/io/pytables.py”,第 532 行,在 _read_index_node 数据 = node[:]

文件“/usr/share/python27/lib/python2.7/site-packages/tables/array.py”,第 684 行,在getitem arr = self._readSlice(startl, stopl, stepl, shape)

_readSlice self._g_readSlice(startl, stopl, stepl, nparr) 中的文件“/usr/share/python27/lib/python2.7/site-packages/tables/array.py”,第 781 行

文件“hdf5Extension.pyx”,第 1092 行,在 tables.hdf5Extension.Array._g_readSlice (tables/hdf5Extension.c:9570) tables.exceptions.HDF5ExtError:读取数组数据时出现问题。

任何人都可以帮助解决这个问题吗?太感谢了。

4

2 回答 2

0

嗯,听起来 HDF5 库可能无法在启用线程安全配置选项(--enable-threadsafe)的情况下编译。此外,如果您从不同的进程同时写入同一个文件,那将不起作用 - 您需要关闭该文件并从另一个进程重新打开它。

在此处查看 HDF5 常见问题解答: http ://www.hdfgroup.org/hdf5-quest.html#gconc

于 2013-07-21T03:00:37.247 回答
0

文件已HDF5损坏。您可以通过执行写入来实现这一点,然后在中间中断它(ctrl-c)。您将无法恢复。HDF5分块写入,如果一个块被中断,我相信状态不一致。

如果您正在执行并发写入(线程或进程),您也会受到损坏。看到这个: http: //pandas.pydata.org/pandas-docs/dev/io.html#notes-caveats

于 2013-07-03T18:57:30.373 回答