자동 로더로 처리된 파일을 정리하기

참고 항목

cloudFiles.cleanSource Databricks 런타임 16.4 이상에서 제공됩니다.

처리 후 소스 디렉터리에서 파일을 이동하거나 삭제하는 데 사용 cloudFiles.cleanSource 하세요. 처리된 파일을 제거하면 저장 비용을 줄이고 향후 목록 작업 기간을 단축할 수 있습니다.

Mode Description
OFF(기본값) 소스 디렉터리의 파일들은 이동되거나 삭제되지 않습니다.
MOVE 원본 디렉터리의 파일들은 경과 기간(elapses)으로 cloudFiles.cleanSource.retentionDuration 정의된 보존 기간(기본 30일) 이후에 지정된 cloudFiles.cleanSource.moveDestination 경로로 이동합니다.
DELETE 원본 디렉터리의 파일들은 경과 기간(elapses)으로 cloudFiles.cleanSource.retentionDuration 정의된 보존 기간(기본 30일) 후에 삭제됩니다.
추가 옵션 Default 유효한 값 Description
cloudFiles.cleanSource.retentionDuration 30 days CalendarInterval 문자열(예: 14 days, 또는) 2 weeks1 month 처리된 파일이 깨끗한 소스로 정리 후보가 되기 전까지 기다려야 하는 시간. 의 경우 DELETE7일보다 커야 합니다. 에 대한 MOVE최소 제한 없음
cloudFiles.cleanSource.waitForCompletion false true, false 이 옵션은 Databricks Runtime 19 이상에서 제공됩니다.
클린 소스는 기본적으로 최선의 노력을 기울이는 작업입니다. 스트림이 깨끗한 소스가 파일을 이동하거나 삭제하기 전에 처리를 완료하면 깨끗한 소스 작업이 종료됩니다. 설정은 cloudFiles.cleanSource.waitForCompletion 스트림이 깨끗한 소스가 파일을 이동하거나 삭제할 때까지 계속 유지하도록 강요합니다. 삭제할 파일이 많으면 스트림 실행 시간이 늘어날 수 있습니다.
이는 스트림이 스스로 완료될 때만 적용됩니다(예: availableNow 모든 파일을 소모하는 트리거). 스트림을 수동으로 중지하거나 취소하면 이 옵션이 설정되어 있어도 클린 소스 작업이 즉시 종료됩니다.
cloudFiles.cleanSource.moveDestination None 클라우드 스토리지 또는 Unity 카탈로그 볼륨 경로 cloudFiles.cleanSourceMOVE로 설정될 때 처리된 파일을 보관할 경로입니다. 클라우드 스토리지 경로 또는 Unity 카탈로그 볼륨 경로(예: /Volumes/my_catalog/my_schema/my_volume/archive/)일 수 있습니다.
이동 위치는 다음을 수행해야 합니다.
  • 원본 디렉터리의 자식이 아닙니다. 원본 디렉터리 내에 이동 대상을 배치하면 보관된 파일이 다시 수집됩니다.
  • 원본과 동일한 외부 위치, 볼륨 또는 DBFS 탑재에 있어야 합니다. 버킷 간 및 컨테이너 간 이동은 지원되지 않으며 오류가 발생합니다.

자동 로더에는 이 디렉터리에 대한 쓰기 권한이 있어야 합니다.

활성화 전 고려사항 cloudFiles.cleanSource

  • Azure Databricks는 여러 스트림이 동일한 소스 디렉터리의 데이터를 소비할 경우 이 옵션을 권장하지 않습니다. 가장 빠른 스트림이 파일을 정리하므로, 느린 스트림은 파일을 절대 가져가지 않습니다.
  • 이 기능을 사용하도록 설정하려면 자동 로더가 검사점에서 추가 상태를 유지 관리해야 하므로 성능 오버헤드가 발생하지만 테이블 반환 함수를 통해 cloud_files_state 관찰 가능성이 향상됩니다. 테이블 값 함수 cloud_files_state을 참조하세요.
  • 클린 소스는 현재 설정을 사용해 특정 파일을 할지 MOVEDELETE 결정합니다. 예를 들어, 파일이 원래 처리되었을 때 설정이 MOVE였고, 30일 후 파일이 정리 대상이 되었을 때 설정이 DELETE로 변경되었다고 가정해 봅시다. 이 경우 클린 소스가 파일을 삭제합니다.
  • 파일이 만료되는 즉시 cloudFiles.cleanSource.retentionDuration 정리되지 않습니다. 비용을 낮추기 위해 자동 로더는 스트림 처리와 동시에 파일을 정리하며, 스트림 처리가 완료되거나 종료되는 즉시 종료됩니다. 정리 후보였지만 스트림 처리 중에 정리되지 않은 파일은 다음 자동 로더 실행 시 가져옵니다.

깨끗한 소스에 관한 노트

  • 클린 소스는 처리해야 할 파일 묶음이 있을 때만 실행됩니다. 섭취와 독립적으로 작동하는 배경 과정이 아닙니다. 소스 디렉터리에 새로운 파일을 인제스트할 필요가 없으면, 현재 스트림 실행 시 깨끗한 소스가 시작되지 않습니다. 따라서 스트림이 새 파일 수신을 중단하면, 이미 보존 기간을 초과한 파일은 이후 스트림이 새 배치를 처리할 때까지 정리되지 않습니다.

    이 배치 요구사항은 에 cloudFiles.cleanSource.waitForCompletion관계없이 적용됩니다. 이 옵션은 진행 중인 정리를 한 번의 실행 내에 마칠 때까지만 스트림을 유지합니다. 처리할 배치가 없으면 깨끗한 소스에서 시작하지 않습니다.

  • N번째 스트림 실행 시 파일이 인제스트되면, N+1 스트림 실행 시 해당 파일의 for가 commit_time 설정됩니다. commit_time 깨끗한 소스가 파일을 이동 또는 삭제 대상으로 결정하기 전에 설정해야 하므로, 파일이 정리 후보가 될 수 있는 가장 빠른 시기는 N+2 스트림 실행입니다.

  • 설정은 commit_time 필요하지만 충분하지는 않습니다. 파일은 보존 기간이 경과된 후에만 정리되며, 그 시간은 .commit_time 예를 들어, 기본값 cloudFiles.cleanSource.retentionDuration 이 30일로 설정되어 있어, 오늘 처리된 파일은 설정된 후 commit_time 30일이 지나야 정리 대상이 됩니다. 이 점은 그 사이에 몇 번의 스트림 흐름이 있든 상관없이 유지됩니다. 파일을 이동하거나 삭제하기 전에 두 조건 모두 충족되어야 합니다.