有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件
人生最曼妙的风景,竟是内心的淡定与从容!
先分割成多個檔案
多個執行緒操作多個文件,避免兩個執行緒操作同一個文件
按行讀取檔案並按行寫入新的檔案
合併所有文件
1,4用linux指令就可以了~
File file = new File(檔案路徑); BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file)); BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),510241024);String line = "";while((line = reader.
}
為了提高效能,你可能需要 mapped IO,具體可以參考:
為何要在Java中使用記憶體映射檔案(Memory Mapped File)或MappedByteBuffer
java大檔案讀寫操作,java nio 之MappedByteBuffer,高效檔案/記憶體映射
java.io和java.nio效能簡單比較
如果是簡單文字的替換,用linux的sed指令就行了。
如果是比較複雜的文字替換,看下面:
http://stackoverflow.com/ques...
http://www.baeldung.com/java-...
用spark分析、lines=sc.textFile("your_file");filterlines=lines.filter(your_filter_function)filterlines.xxx()
先分割成多個檔案
多個執行緒操作多個文件,避免兩個執行緒操作同一個文件
按行讀取檔案並按行寫入新的檔案
合併所有文件
1,4用linux指令就可以了~
File file = new File(檔案路徑);
雷雷BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),510241024);
String line = "";
while((line = reader.
}
為了提高效能,你可能需要 mapped IO,具體可以參考:
為何要在Java中使用記憶體映射檔案(Memory Mapped File)或MappedByteBuffer
java大檔案讀寫操作,java nio 之MappedByteBuffer,高效檔案/記憶體映射
java.io和java.nio效能簡單比較
如果是簡單文字的替換,用linux的sed指令就行了。
如果是比較複雜的文字替換,看下面:
http://stackoverflow.com/ques...
http://www.baeldung.com/java-...
用spark分析、
lines=sc.textFile("your_file");
filterlines=lines.filter(your_filter_function)
filterlines.xxx()