有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件
人生最曼妙的风景,竟是内心的淡定与从容!
먼저 여러 파일로 분할
두 스레드가 동일한 파일을 작업하는 것을 방지하기 위해 여러 스레드가 여러 파일을 작업합니다
파일을 한 줄씩 읽고 새 파일을 한 줄씩 씁니다
모든 파일 병합
1,4 그냥 리눅스 명령어를 사용하세요~
파일 파일 = 새 파일(파일 경로); BufferedInputStream fis = new BufferedInputStream(new FileInputStream(파일)); BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),510241024);String line = "";while((line = reader .readLine()) != null){
}
성능 향상을 위해 매핑된 IO가 필요할 수 있습니다. 자세한 내용은
Java에서 메모리 매핑 파일 또는 MappedByteBuffer를 사용하는 이유
java 대용량 파일 읽기 및 쓰기 작업, java nio의 MappedByteBuffer, 효율적인 파일/메모리 매핑
java.io와 java.nio의 성능 단순 비교
간단한 텍스트 교체라면 리눅스의 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 그냥 리눅스 명령어를 사용하세요~
파일 파일 = 새 파일(파일 경로);
으아아아BufferedInputStream fis = new BufferedInputStream(new FileInputStream(파일));
BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),510241024);
String line = "";
while((line = reader .readLine()) != null){
}
성능 향상을 위해 매핑된 IO가 필요할 수 있습니다. 자세한 내용은
을 참조하세요.Java에서 메모리 매핑 파일 또는 MappedByteBuffer를 사용하는 이유
java 대용량 파일 읽기 및 쓰기 작업, java nio의 MappedByteBuffer, 효율적인 파일/메모리 매핑
java.io와 java.nio의 성능 단순 비교
간단한 텍스트 교체라면 리눅스의 sed 명령어를 사용하면 됩니다.
텍스트 교체가 더 복잡한 경우 아래를 참조하세요.
http://stackoverflow.com/ques...
http://www.baeldung.com/java-...
사용spark分析、
lines=sc.textFile("your_file");
filterlines=lines.filter(your_filter_function)
filterlines.xxx()