이 문서에서는 파이프라인 업데이트를 설명하고 업데이트를 트리거하는 방법에 대한 세부 정보를 제공합니다.
파이프라인 업데이트란?
파이프라인을 만들고 실행할 준비가 되면 업데이트을 시작합니다. 파이프라인 업데이트는 다음을 수행합니다.
- 올바른 구성으로 클러스터를 시작합니다.
- 정의된 모든 테이블 및 뷰를 검색하고 잘못된 열 이름, 누락된 종속성 및 구문 오류와 같은 분석 오류를 확인합니다.
- 사용 가능한 최신 데이터를 사용하여 테이블 및 뷰를 만들거나 업데이트합니다.
드라이 런을 사용하면 테이블을 만들거나 업데이트할 때까지 기다리지 않고 파이프라인의 소스 코드에서 문제를 확인할 수 있습니다. 이 기능은 파이프라인을 개발하거나 테스트할 때 유용합니다. 파이프라인에서 잘못된 테이블 또는 열 이름과 같은 오류를 빠르게 찾아 수정할 수 있기 때문입니다.
파이프라인 업데이트는 어떻게 트리거되는가?
다음 옵션 중 하나를 사용하여 파이프라인 업데이트를 시작합니다.
| 업데이트 트리거 | 세부 정보 |
|---|---|
| 설명서 | Lakeflow 파이프라인 편집기 또는 파이프라인 목록에서 파이프라인 업데이트를 수동으로 트리거할 수 있습니다. 파이프라인 업데이트 수동 트리거를 참조하세요. |
| Scheduled | 작업을 사용하여 파이프라인에 대한 업데이트를 예약할 수 있습니다. 작업을 위한 파이프라인 태스크를 참조하세요. |
| Programmatic | 타사 도구, API 및 CLI를 사용하여 프로그래밍 방식으로 업데이트를 트리거할 수 있습니다. 워크플로에서 파이프라인 실행 및 파이프라인 REST API를 참조하세요. |
파이프라인 업데이트를 수동으로 트리거하기
다음 옵션 중 하나를 사용하여 파이프라인 업데이트를 수동으로 트리거합니다.
- Lakeflow 파이프라인 편집기에서 전체 파이프라인 또는 파이프라인의 하위 집합(단일 원본 파일 또는 단일 테이블)을 실행합니다. 자세한 내용은 파이프라인 코드 실행을 참조하세요.
- 작업 및 파이프라인 목록에서 전체 파이프라인을 실행합니다 .
을 클릭합니다. 목록의 파이프라인과 동일한 행에 있습니다.
- 파이프라인 모니터링 페이지에서
단추를 클릭합니다.
비고
수동으로 트리거된 파이프라인 업데이트의 기본 동작은 파이프라인에 정의된 모든 데이터 세트를 새로 고치는 것입니다.
파이프라인 의미 체계 갱신
다음 표는 물리적 뷰와 스트리밍 테이블에 대한 기본 새로 고침, 전체 새로 고침, 및 재설정 체크포인트의 동작 방식을 설명합니다.
| 업데이트 형식 | 구체화된 뷰 | 스트리밍 테이블 |
|---|---|---|
| 새로 고침(기본값) | 정의 쿼리에 대한 현재 결과를 반영하도록 결과를 업데이트합니다. 비용을 검사하고 비용 효율적인 경우 증분 새로 고침을 수행합니다. | 스트리밍 테이블 및 흐름에 정의된 논리를 통해 새 레코드를 처리합니다. |
| 전체 새로 고침 | 정의 쿼리에 대한 현재 결과를 반영하도록 결과를 업데이트합니다. | 스트리밍 테이블에서 데이터를 지우고, 흐름에서 상태 정보(검사점)를 지우고, 데이터 원본의 모든 레코드를 다시 처리합니다. |
| 스트리밍 흐름 체크포인트 초기화 | 물질화된 뷰에는 적용되지 않습니다. | 상태 정보(체크포인트)를 플로우에서 삭제하지만, 스트리밍 테이블의 데이터는 삭제하지 않으며, 데이터 소스에서 모든 레코드를 다시 처리합니다. |
기본적으로 파이프라인의 모든 구체화된 뷰 및 스트리밍 테이블은 각 업데이트와 함께 새로 고쳐집니다. 필요에 따라 다음 기능을 사용하여 업데이트에서 테이블을 생략할 수 있습니다.
- 새로 고침테이블 선택: 업데이트를 실행하기 전에 이 UI를 사용하여 구체화된 뷰 및 스트리밍 테이블을 추가하거나 제거합니다. 선택한 테이블에 대한 파이프라인 업데이트를 시작하려면 를 참조하세요.
- 실패한 테이블 갱신: 후속 종속성을 포함하여 실패한 구체화된 뷰 및 스트리밍 테이블에 대한 업데이트를 시작합니다. 실패한 테이블에 대한 파이프라인 업데이트 시작을 참조하세요.
이러한 두 기능 모두 기본 새로 고침 의미 체계 또는 전체 새로 고침을 지원합니다. 필요에 따라 새로 고침 대화 상자를 사용하여 실패한 테이블에 대한 새로 고침을 실행할 때 추가 테이블을 제외할 수 있습니다.
스트리밍 테이블의 경우, 관련된 스트리밍 테이블의 데이터가 아닌 선택된 스트림의 스트리밍 체크포인트를 삭제할 수 있습니다. 선택한 흐름의 체크포인트를 삭제하려면 Databricks REST API를 사용하여 새로 고침을 시작하십시오. 선택적 스트리밍 흐름의 체크포인트를 지우려면 파이프라인 업데이트를 시작하십시오를 참조하세요.
전체 새로 고침을 사용해야 하나요?
Databricks는 필요한 경우에만 전체 새로 고침을 실행하는 것이 좋습니다. 전체 새로 고침은 항상 데이터 세트를 정의하는 논리를 통해 지정된 데이터 원본의 모든 레코드를 다시 처리합니다. 전체 새로 고침을 완료하는 시간과 리소스는 원본 데이터의 크기와 상관 관계가 있습니다.
구체화된 뷰는 기본 새로 고침 또는 전체 새로 고침 사용 여부와 동일한 결과를 반환합니다. 스트리밍 테이블과 함께 전체 새로 고침을 사용하면 모든 상태 처리 및 검사점 정보가 다시 설정되고 입력 데이터를 더 이상 사용할 수 없는 경우 레코드가 삭제될 수 있습니다.
Databricks는 입력 데이터 원본에 테이블 또는 뷰의 원하는 상태를 다시 만드는 데 필요한 데이터가 포함된 경우에만 전체 새로 고침을 권장합니다. 입력 원본 데이터를 더 이상 사용할 수 없고 전체 새로 고침을 실행한 결과를 고려합니다.
| 데이터 원본 | 입력 데이터가 없는 이유 | 전체 새로 고침의 결과 |
|---|---|---|
| Kafka | 짧은 보존 임계값 | Kafka 원본에 더 이상 없는 레코드는 대상 테이블에서 삭제됩니다. |
| 오브젝트 스토리지의 파일 | 수명 주기 정책 | 원본 디렉터리에 더 이상 없는 데이터 파일은 대상 테이블에서 삭제됩니다. |
| 테이블의 기록들 | 준수를 위해 삭제됨 | 원본 테이블에 있는 레코드만 처리됩니다. |
테이블 또는 뷰에서 전체 새로 고침이 실행되지 않도록 하려면 테이블 속성 pipelines.reset.allowedfalse설정합니다.
파이프라인 테이블 속성을 참조하세요.
추가 흐름 사용하여 전체 새로 고침 없이 기존 스트리밍 테이블에 데이터를 추가할 수도 있습니다.
선택한 테이블에 대한 파이프라인 업데이트 시작
필요에 따라 파이프라인에서 선택한 테이블에 대해서만 데이터를 다시 처리할 수 있습니다. 예를 들어 개발 중에는 단일 테이블만 변경하고 테스트 시간을 줄이려고 하거나 파이프라인 업데이트가 실패하고 실패한 테이블만새로 고치려고 합니다.
Lakeflow 파이프라인 편집기에서는 원본 파일, 선택한 테이블 또는 단일 테이블을 다시 처리할 수 있는 옵션이 있습니다. 자세한 내용은 파이프라인 코드 실행을 참조하세요.
실패한 테이블에 대한 파이프라인 업데이트 시작
파이프라인 그래프의 하나 이상의 테이블에 오류가 발생하여 파이프라인 업데이트가 실패하는 경우 실패한 테이블 및 모든 다운스트림 종속성만 업데이트할 수 있습니다.
비고
제외된 테이블은 실패한 테이블에 의존하더라도 새로 고쳐지지 않습니다.
실패한 테이블을 업데이트하려면 파이프라인 모니터링 페이지에서 실패한 테이블 새로 고침을 클릭합니다.
파이프라인 모니터링 페이지에서 선택한 실패한 테이블만 업데이트하려면 다음을 수행합니다.
Button Down새로 고침 실패 테이블 버튼 옆의 에서 아래쪽을 클릭한 다음 새로 고침할 테이블 선택을 클릭합니다.
새로 고침 테이블 선택 대화 상자가 나타납니다.새로 고칠 테이블을 선택하려면 각 테이블을 클릭합니다. 선택한 테이블이 강조 표시되고 레이블이 지정됩니다. 업데이트에서 테이블을 제거하려면 테이블을 다시 클릭합니다.
새로 고침 선택클릭합니다.
비고
새로 고침 선택 단추는 선택한 테이블 수를 괄호로 표시합니다.
선택한 테이블에 대해 이미 수집된 데이터를 다시 처리하려면
Blue Down Caret새로 고침 선택 단추 옆에 있는 클릭하고 전체 새로 고침 선택 클릭합니다.
선택적 스트리밍 흐름의 체크포인트를 지우기 위해 파이프라인 업데이트를 시작합니다.
파이프라인의 선택된 스트리밍 플로우에 대해 이미 수집된 데이터를 삭제하지 않고 데이터를 다시 처리할 수 있습니다.
비고
선택되지 않은 플로우는 REFRESH 업데이트를 사용하여 실행됩니다. 다른 테이블을 선택적으로 새로 고치려면 full_refresh_selection 또는 refresh_selection을 지정할 수도 있습니다.
선택한 스트리밍 검사점을 새로 고치는 업데이트를 시작하려면 Lakeflow Spark 선언적 파이프라인 REST API에서 업데이트 요청을 사용합니다. 다음 예제에서는 curl 명령을 사용하여 updates 요청을 호출하여 파이프라인 업데이트를 시작합니다.
curl -X POST \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{
"reset_checkpoint_selection": [<streaming flow1>, <streaming flow 2>...]
}' \
https://<your-databricks-instance>/api/2.0/pipelines/<your-pipeline-id>/updates
테이블이 업데이트되는 것을 기다리지 않고 파이프라인에서 오류를 확인합니다.
중요합니다
파이프라인 Dry run 기능은 공개 미리 보기로 제공됩니다.
전체 업데이트를 실행하지 않고 파이프라인의 소스 코드가 유효한지 확인하려면 드라이 런을 사용합니다. 드라이 런은 파이프라인에 정의된 데이터 세트 및 흐름의 정의를 확인하지만 데이터 세트를 구체화하거나 게시하지는 않습니다. 잘못된 테이블 또는 열 이름과 같이 실행 중에 발견된 오류는 UI에 보고됩니다.
드라이 실행을 시작하려면
Blue Down Caret시작 옆의 파이프라인 세부 정보 페이지에서 를 클릭하고 드라이 실행을 클릭합니다.
드라이 실행이 완료되면 오류는 아래쪽 패널의 이벤트 트레이에 표시됩니다. 이벤트 트레이를 클릭하면 아래쪽 패널에 있는 모든 문제가 표시됩니다. 또한 이벤트 로그에는 드라이 런과 관련된 이벤트만 표시되며, DAG에는 메트릭이 표시되지 않습니다. 오류가 발견되면 이벤트 로그에서 세부 정보를 사용할 수 있습니다.
가장 최근의 건식 실행 결과만 볼 수 있습니다. 드라이 실행이 가장 최근에 실행된 업데이트인 경우 업데이트 기록에서 선택하여 결과를 볼 수 있습니다. 시험 실행 후 다른 업데이트가 실행되면 결과를 더 이상 UI에서 사용할 수 없습니다.
개발 모드
파이프라인은 개발 모드가 켜져 있는 상태에서 Lakeflow 파이프라인 편집기에서 실행됩니다. 기본적으로 개발 모드를 사용하여 실행되도록 예약된 파이프라인이 꺼져 있습니다. 프로덕션 환경에서 파이프라인이 실행되는 방법을 테스트하려면 편집기 드롭다운에서 다른 설정으로 실행을 선택하여 개발 모드를 사용할지 여부를 대화형으로 선택할 수 있습니다.
비고
레거시 Notebook 편집기를 사용하여 만든 파이프라인은 기본적으로 개발 모드를 사용합니다. 파이프라인 모니터링 페이지에서 설정을 선택하여 설정을 확인하거나 변경할 수 있습니다. 모니터링 페이지는 작업 영역의 왼쪽에 있는 작업 및 파이프라인 단추에서 사용할 수 있습니다. 파이프라인 자산 브라우저에서 실행 결과를 클릭하여 파이프라인 편집기에서 모니터링 페이지로 직접 이동할 수도 있습니다.
개발 모드에서 파이프라인을 실행하는 경우 Lakeflow Spark 선언적 파이프라인 시스템은 다음을 수행합니다.
- 클러스터를 재사용하여 재시작으로 인한 부담을 방지합니다. 기본적으로 클러스터는 개발 모드를 사용하는 경우 2시간 동안 실행됩니다.
pipelines.clusterShutdown.delay의 설정을 사용하여 이를 변경할 수 있습니다. - 즉시 오류를 감지하고 수정할 수 있도록 파이프라인 재시도를 사용하지 않도록 설정합니다.
개발 모드가 해제된 상태에서 시스템은 다음을 수행합니다.
- 메모리 누수 및 부실 자격 증명을 비롯한 특정 복구 가능한 오류에 대해 클러스터를 다시 시작합니다.
- 클러스터 시작 실패와 같은 특정 오류 발생 시 실행을 다시 시도합니다.
비고
개발 모드를 켜고 끄는 것은 클러스터 및 파이프라인 실행 동작만 제어합니다. 테이블을 게시하기 위한 카탈로그의 스토리지 위치 및 대상 스키마는 파이프라인 설정의 일부로 구성되어야 하며 모드 간에 전환할 때는 영향을 받지 않습니다.