저는 각각 200GB의 크기를 포함하는 약 10 개의 파일을받는 한 프로젝트에서 작업하고 있습니다. 내 프로젝트 요구 사항은 각 파일에서 데이터를 추출하고 다른 파일과 결합하여 데이터를 추출하는 것입니다.Java에서 빅 데이터 처리
E.G 나는 계정 ID가있는 파일 1.txt를 가지고 있으며 계정 ID와 계정 이름이있는 파일 2.txt를 가지고 있습니다. 첫 번째 파일의 계정 ID를 기반으로 두 번째 파일에서 데이터를 추출해야합니다.
이렇게하면 10 개의 파일 각각에 대해 조작을 수행하고 최종 출력 파일을 만들어야합니다.
저는 현재 자바에서이 과정을 진행하고 있습니다. 대략 4 ~ 5 시간이 걸립니다.
변경으로 성능을 향상시킬 수 있습니까? 자바와 통합하여 성능을 향상시킬 수있는 기술이나 도구 또는 프레임 워크가 있습니까?
다음 접근 방식을 사용했습니다.
1) Apache 드릴 - 조인 쿼리를 수행 중입니다. 결과 : 파일 크기가 너무 많아서 드릴 드릴 다운 예외가 발생합니다.
2) Apache Beam- 병렬 처리를 사용하여 파일에 대한 결합을 수행하고 있습니다. 결과 : 그룹별로 기능 부족으로 메모리 부족 예외가 표시됩니다.
이 데이터는 hadoop에서 읽습니다.
왜 자바 지역의 처리를 위해 데이터를 다운로드해야합니까? 대신 Hive와 같은 도구를 사용하여 데이터를 직접 처리 할 수 있습니까? –
빔 실행자 또는 드릴 비트 힙 크기를 늘렸습니까? Hive, Spark 또는 Pig는 대부분의 하프 배포본에서 일반적인 훌륭한 도구입니다. –
Beam 코드를 포함하고 Beam SDK의 버전과 사용중인 러너를 명확히하십시오. – jkff