2012-05-04 4 views
0

일부 데이터를 저장하는 파일이 있습니다.이 데이터는 모든 계산 프로그램에서 일부 계산에 사용해야합니다.Java Hadoop : 파일의 내용을 한 번만 읽을 수 있습니까?

파일에서 데이터를 읽는 방법을 알고 있지만이 기능은 매퍼 함수 내에서 수행 할 수 있습니다. 그러나이 데이터는 모든 매퍼에 대해 동일하므로 매핑 프로세스 존재 전에 어딘가에 (변수에) 저장하고 싶습니다. 매퍼에서 내용을 사용하십시오.

지도 기능에서이 작업을 수행하고 예를 들어 입력으로 10 줄의 파일이 있으면지도 기능이 10 번 호출됩니다. 맞습니까? 내가지도 기능으로 파일의 내용을 읽을 수 있다면 내가 그것을 사전에

감사

답변

0

필요가 10 번 읽 다른 JVM의 내부에서 실행하여 매퍼의 많은 (그리고 아마도 다른 기계에) 때문에, 데이터를 Hadoop에 제출하기 전에 한 번 응용 프로그램으로 데이터를 읽을 수는 없습니다. 그러나 Distributed Cache을 사용하여 "응용 프로그램 별 대형 읽기 전용 파일을 효율적으로 배포"할 수 있습니다.

링크 별 : "효율성은 파일이 작업 당 한 번만 복사되고 슬레이브에서 아카이브되지 않은 아카이브를 캐시 할 수 있기 때문에 발생합니다."

0

제가 이해한다면, 파일의 모든 라인을 읽으려면 1 개의 함수 만 호출하기를 원합니다. 예라고 가정하면 여기에 대한 내 견해가 있습니다.

매퍼를 사용하면 안전을 위해 한 번에 한 줄씩 읽을 수 있으므로 읽는 입력 줄 수를 제어 할 수 있습니다. 그리고 이것은 일정량의 기억을 필요로합니다. 예를 들어, 파일 크기가 1GB 크기와 같은 경우 어떻게됩니까? 모든 내용을 읽을 의향이 있습니까? 이것은 상당한 양의 메모리를 차지하고 성능에 영향을 미칩니다. 이것은 이전에 언급 한 안전 측면입니다.

필자의 결론은 파일의 모든 내용을 읽는 Mapper 함수가 없다는 것입니다. 동의하십니까?

관련 문제