2016-06-29 24 views
1

我有一個包含key:value行的大數據csv文件。我怎樣才能平行讀取它? 我不能將它分成塊,因爲任何行都有另一個字節大小。 在這種情況下我應該做什麼?如何在Java + Akka上讀取文件併發性

我在Java上找不到示例。

回答

2

實際上沒有理由閱讀相同的文件並列,因爲這不會增加文件讀取的速度。如果你想讀一個文件,你可以用幾種方式做到這一點:

  1. 你讀整個文件到一個字節[]一次,這是加載文件的最快的方法之後,你可以把它分解到新線路和管理數據。

  2. 您使用掃描儀和nextLine方法從文件中讀取行。這不是很有效,所以我不建議這樣做。

  3. 你用一些緩衝區字節數組讀取文件。這是一個內存使用效率高的解決方案,但1.選項仍然是最好的。

同時,由於文件加載比較慢(相比於在RAM中的數據管理),你應該讓一個線程(是的,僅僅只有一個,沒有必要更多)讀取所有的文件字節數組,也可能是另一個將字節[]轉換爲加載的配置的線程,因爲如果文件很大,那也可能花費很多時間。