複合要素の 1 次元 (N x 1) データセットを含む HDF5 ファイルを持っています。実際には時系列です。データは最初にオフラインで HFD5 ファイルに収集され、次に分析されます。分析中に、ほとんどのデータは興味深いものではないことが判明し、その一部だけが興味深いものになります。データセットは非常に大きくなる可能性があるため、興味深い要素を維持しながら、興味のない要素を取り除きたいと考えています。たとえば、500 要素のデータセットの要素 0 ~ 100 と 200 ~ 300、および 350 ~ 400 を保持し、残りをダンプします。しかし、どのように?
HDF5 でこれを達成する方法について経験のある人はいますか? どうやら、少なくとも次の方法で行うことができます。
- (明らかな解決策)、新しい新鮮なファイルを作成し、そこに必要なデータを要素ごとに書き込みます。次に、古いファイルを削除します。
- または、古いファイルに新しい新しいデータセットを作成し、そこに必要なデータを書き込み、H5Gunlink() を使用して古いデータセットのリンクを解除し、h5repack を介してファイルを実行して、要求されていない空き領域を取り除きます。
- または、既存のデータセット内の関心のある要素を先頭に向かって移動します (たとえば、要素 200 ~ 300 を位置 101 ~ 201 に、要素 350 ~ 400 を位置 202 ~ 252 に移動します)。次に、H5Dset_extent() を呼び出して、データセットのサイズを縮小します。次に、h5repack を実行して空き領域を解放します。
つまらない要素を取り除いてもかなりファイルが大きくなる可能性があるので、書き直しはしたくない(時間がかかる)のですが、実際に空き容量を解放する必要がありそうです。HDF5 の専門家からのヒントはありますか?