2017-10-11 1 views
0

저는 Blocked sort-based indexing을 공부하고 있으며, 디스크 읽기가 블록 단위이므로 효율적이기 때문에 32 또는 64kb의 일부 블록으로 파일을로드하는 것에 대한 알고리즘을 설명합니다.블록 단위로 메모리에 파일을로드하십시오.

내 첫 번째 질문은 어떻게 파일을 블록 단위로로드해야합니까? 64KB의 버퍼 판독기입니까? 하지만 자바 입력 스트림을 사용하면이 최적화가 이미 완료되었거나 스트림을 처리 할 수 ​​있는지 여부가 결정됩니다.

실제로 sparkContext.textFile()이 최적화를 수행하는지 여부에 관계없이 나는 apache spark를 사용합니까? 스파크 스트리밍은 어떨까요?

+0

파일을 저장하는 데 사용하는 파일 시스템은 무엇입니까? 또한 파일의 형식은 무엇입니까? –

+0

@AlexandreDupriez 일반 PC 스토리지 시스템이지만 Hadoop을 사용할 수도 있습니다. 파일은 txt가되지만 json, csv와 다른 경우 다른 솔루션을 알고 싶습니다. –

답변

0

JVM에서 파일 시스템을 직접 보지 않아도 읽기 및 블록 크기를 정렬하는 것이 의미가 있다고 생각하지 않습니다. 또한 다양한 종류의 드라이브와 많은 다른 파일 시스템이 있으며 블록 크기는 다양 할 수도 있고 전체 I/O 시간에 거의 영향을 미치지 않을 수도 있습니다.

최상의 성능은 아마도 java.nio.FileChannel을 사용하는 것입니다. 그런 다음 성능 차이가 있는지 확인하기 위해 주어진 블록 크기의 ByteBuffer을 읽는 것으로 실험 할 수 있습니다. 당신이 볼 수있는 유일한 효과는 매우 작은 버퍼에 대한 JVM 오버 헤드가 더 중요하다는 것입니다 (극단적 인 경우 바이트 단위로 읽음).

파일 채널의 map 메서드를 사용하여 MappedByteBuffer을 보유 할 수도 있습니다.

관련 문제