84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件
人生最曼妙的风景,竟是内心的淡定与从容!
まず複数のファイルに分割してください
2つのスレッドが同じファイルを操作することを避けるために、複数のスレッドが複数のファイルを操作します
ファイルを 1 行ずつ読み取り、新しいファイルを 1 行ずつ書き込みます
すべてのファイルを結合
1,4 Linuxコマンドを使うだけ~
ファイル file = 新しいファイル(ファイルパス); BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file)); BufferedReader リーダー = new BufferedReader(new InputStreamReader(fis,"utf-8"),510241024);String line = "";while((line = Reader.readLine()) != null){
}
パフォーマンスを向上させるために、マッピングされた 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()
まず複数のファイルに分割してください
2つのスレッドが同じファイルを操作することを避けるために、複数のスレッドが複数のファイルを操作します
ファイルを 1 行ずつ読み取り、新しいファイルを 1 行ずつ書き込みます
すべてのファイルを結合
1,4 Linuxコマンドを使うだけ~
ファイル file = 新しいファイル(ファイルパス);
リーリーBufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
BufferedReader リーダー = new BufferedReader(new InputStreamReader(fis,"utf-8"),510241024);
String line = "";
while((line = Reader.readLine()) != null){
}
パフォーマンスを向上させるために、マッピングされた 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()