Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Checkpoint로 중간 계산 재사용하기

여러 출력이 같은 변환 노드를 공유하면 기본적으로 각 출력에서 그 상위 로직을 다시 계산할 수 있습니다. 해당 노드를 checkpoint로 지정하면 다음 빌드에서 중간 결과를 저장하고 같은 job group의 출력들이 재사용합니다.

이 기능은 변환 결과를 저장하는 최적화입니다. 스트리밍 재시작 위치를 기록하는 checkpoint 또는 bookmark와 용도를 구분합니다.

저장 비용과 적용 조건

결과를 디스크에 쓰고 다시 읽는 비용이 반복 계산의 절감분보다 크면 오히려 느려질 수 있습니다. 쿼리를 여러 부분으로 나누면서 엔진이 전체 경로에 적용하던 최적화도 줄어들 수 있습니다.

중간 결과를 공유할 출력은 같은 job group에 있어야 합니다. 다른 그룹이면 그룹마다 checkpoint를 다시 계산하므로 여러 출력 간 재사용 효과를 얻지 못합니다.

노드 지정

가상 예시에서 Attachment와 Request 출력은 Clean, Checkpoint 노드를 공유합니다. 별도 실행으로는 두 출력이 같은 상위 로직을 각각 계산합니다.

공유 노드를 오른쪽 클릭하고 Mark as checkpoint를 선택합니다.

저장 전략

전략동작과 제한
Save in short-term disk기본값입니다. 각 출력의 결과를 디스크에 임시 저장합니다.
Save in memory메모리에 임시 저장하여 빠르게 읽습니다. 작은 결과에 유리하지만 큰 데이터는 메모리 부족으로 실패할 수 있습니다. Faster 파이프라인에서는 지원하지 않습니다.
Save as output data전용 데이터셋에 checkpoint의 최신 트랜잭션을 저장합니다. 데이터셋은 해당 checkpoint를 처음 배포할 때 생성됩니다.

Checkpoint > Configure strategy에서 전략을 정합니다. Split처럼 출력이 여러 개인 변환은 출력마다 전략을 따로 선택할 수 있습니다. 출력이 하나인 노드는 전략을 선택하거나 checkpoint 지정을 해제해야 합니다.

지정한 노드에는 연한 파란색 배지가 표시됩니다.

공유 출력의 job group

예시의 Request 출력에서 오른쪽 클릭의 Assign job group > New group을 선택합니다.

열린 Build settings에서 다른 출력인 Attachment도 선택하여 Add to group...으로 같은 그룹에 넣습니다.

이렇게 해야 두 출력이 같은 빌드 job에서 중간 결과를 함께 사용할 수 있습니다. Job group의 자원과 보안 표지 상속도 그룹 구성 조건을 따릅니다.

임시 저장량

Save in short-term disk는 변환 결과 전체를 HDFS 같은 저장소로 보냅니다. 예를 들어 큰 Join 결과를 checkpoint로 지정하면 최종 데이터셋이 작더라도 Join의 전체 중간 결과가 저장됩니다. 최종 출력 크기만으로 checkpoint 저장 비용을 판단하지 않습니다.