使用 odo 将巨大的 h5 文件与多个数据集合并为一个
combining huge h5 files with multiple datasets into one with odo
我有许多大型(13GB+ 大小)h5 文件,每个 h5 文件都有两个数据集,这些数据集是使用 pandas 创建的:
df.to_hdf('name_of_file_to_save', 'key_1',table=True)
df.to_hdf('name_of_file_to_save', 'key_2', table=True) # saved to the same h5 file as above
我在这里看到了 post:
关于使用 odo 连接 h5 文件。我想要做的是对创建的每个 h5 文件,每个文件都有 key_1
和 key_2
,将它们组合起来,以便所有 key_1
数据都在新 h5 文件的一个数据集中并且所有 key_2
都在同一个新 h5 文件的另一个数据集中。所有 key_1
的列数相同,key_2
也是如此
我试过这个:
from odo import odo
files = ['file1.h5','file2.h5','file3.h5','file4.h5']
for i in files:
odo('hdfstore://path_to_here_h5_files_live/%s::key_1' % i,
'hdfstore://path_store_new_large_h5::key_1')
但是我得到一个错误:
(tables/hdf5extension.c:7824)
tables.exceptions.HDF5ExtError: HDF5 error back trace
File "H5A.c", line 259, in H5Acreate2
unable to create attribute
File "H5Aint.c", line 275, in H5A_create
unable to create attribute in object header
File "H5Oattribute.c", line 347, in H5O_attr_create
unable to create new attribute in header
File "H5Omessage.c", line 224, in H5O_msg_append_real
unable to create new message
File "H5Omessage.c", line 1945, in H5O_msg_alloc
unable to allocate space for message
File "H5Oalloc.c", line 1142, in H5O_alloc
object header message is too large
End of HDF5 error back trace
Can't set attribute 'non_index_axes' in node:
/key_1 (Group) ''.
Closing remaining open
对于这种特定情况,问题在于列太多,超出了为该条信息分配的内存限制。解决方案是加载数据框并转置它。
我有许多大型(13GB+ 大小)h5 文件,每个 h5 文件都有两个数据集,这些数据集是使用 pandas 创建的:
df.to_hdf('name_of_file_to_save', 'key_1',table=True)
df.to_hdf('name_of_file_to_save', 'key_2', table=True) # saved to the same h5 file as above
我在这里看到了 post:
关于使用 odo 连接 h5 文件。我想要做的是对创建的每个 h5 文件,每个文件都有 key_1
和 key_2
,将它们组合起来,以便所有 key_1
数据都在新 h5 文件的一个数据集中并且所有 key_2
都在同一个新 h5 文件的另一个数据集中。所有 key_1
的列数相同,key_2
我试过这个:
from odo import odo
files = ['file1.h5','file2.h5','file3.h5','file4.h5']
for i in files:
odo('hdfstore://path_to_here_h5_files_live/%s::key_1' % i,
'hdfstore://path_store_new_large_h5::key_1')
但是我得到一个错误:
(tables/hdf5extension.c:7824)
tables.exceptions.HDF5ExtError: HDF5 error back trace
File "H5A.c", line 259, in H5Acreate2
unable to create attribute
File "H5Aint.c", line 275, in H5A_create
unable to create attribute in object header
File "H5Oattribute.c", line 347, in H5O_attr_create
unable to create new attribute in header
File "H5Omessage.c", line 224, in H5O_msg_append_real
unable to create new message
File "H5Omessage.c", line 1945, in H5O_msg_alloc
unable to allocate space for message
File "H5Oalloc.c", line 1142, in H5O_alloc
object header message is too large
End of HDF5 error back trace
Can't set attribute 'non_index_axes' in node:
/key_1 (Group) ''.
Closing remaining open
对于这种特定情况,问题在于列太多,超出了为该条信息分配的内存限制。解决方案是加载数据框并转置它。