我目前正在開發一個Java項目,我必須在一個非常大的數據集上執行幾個信息檢索和分類任務。一個小集合將有10K文件。從每個文件大約100個150維向量的雙打。因此,大約有150個雙打或1M雙打的1M矢量。存儲後,我需要回憶所有這些或其中的一部分,並執行聚類(例如KMEANS)。實際收藏有更多的文件(我目前正在處理200K文件)。使用Java存儲和檢索大型數據集的最佳方法
當然,我已經多次處理OutOfMemoryError,並且我最後一次解決問題的方法是存儲10個大小超過5GB的XML文件。這些文件必須是10,因爲DOM Writer的內存已滿。對於閱讀,我使用了SAX Parser,它沒有將它們加載到內存中。另外,在任何類型的文本中存儲一個double都會增加他的實際大小,並增加解析和轉換的計算成本。最後,聚類算法通常是迭代的,所以它們會一次又一次地需要相同的數據。我的方法沒有緩存任何東西,它只是從磁盤讀取很多次。
我現在正在尋找一種以二進制格式(數據庫,原始二進制文件等)以及讀取它們的有效方式存儲任意數量數據的更緊湊方法。有沒有人有任何想法提出?
JDBM3已經升級到JDBM4,更好地瞭解爲[創建mapdb(http://www.mapdb.org/)。 –