다음을 통해 공유


Azure Databricks의 보관 지원

Important

이 기능은 Databricks Runtime 13.3 LTS 이상에 대한 공개 미리 보기에 있습니다.

Azure Databricks의 보관 지원에는 델타 테이블이 포함된 클라우드 개체 스토리지에서 클라우드 기반 수명 주기 정책을 사용할 수 있는 기능 컬렉션이 도입되었습니다.

Important

Azure Databricks는 Azure Archive에 대해서만 보관을 지원합니다. 수명 주기 관리를 사용하여 비용 최적화에 대한 Azure 문서를 참조하세요.

보관 지원을 사용하도록 설정해야 하는 이유는 무엇인가요?

보관 지원은 보관된 파일을 건드리지 않고도 올바르게 응답할 수 있는 쿼리만 허용합니다. 이러한 쿼리에는 다음 중 하나가 포함됩니다.

  • 메타데이터만 쿼리합니다.
  • 보관된 파일을 검색할 필요가 없는 필터가 있습니다.

보관된 파일의 데이터가 필요한 모든 쿼리는 실패합니다.

Important

Azure Databricks는 올바른 결과를 반환하기 위해 보관된 파일이 필요한 쿼리에 대한 결과를 반환하지 않습니다.

보관 지원이 없으면 데이터 파일 또는 트랜잭션 로그 파일이 보관된 위치로 이동했으며 쿼리할 때 사용할 수 없으므로 델타 테이블에 대한 작업이 중단될 수 있습니다. 보관 지원은 가능한 경우 보관된 데이터를 쿼리하지 않도록 최적화를 도입합니다. 또한 쿼리를 완료하기 위해 보관 스토리지에서 복원해야 하는 파일을 식별하는 새 구문을 추가합니다.

Azure Databricks에서 테이블에 대한 보관 지원을 사용하도록 설정해도 클라우드 개체 스토리지에 대해 정의된 수명 주기 정책을 만들거나 변경하지 않습니다. 원하는 결과의 경우 클라우드 수명 주기 정책과 설정이 delta.timeUntilArchived 같아야 합니다.

보관된 데이터에 최적화된 쿼리

Azure Databricks의 보관 지원은 델타 테이블에 대해 다음 쿼리를 최적화합니다.

쿼리 새 동작
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] 보관된 파일을 자동으로 무시하고 보관하지 않은 스토리지 계층의 데이터에서 결과를 반환합니다.
Delta Lake 유지 관리 명령: OPTIMIZE, ZORDER, ANALYZEPURGE 보관된 파일을 자동으로 무시하고 나머지 테이블에서 유지 관리를 실행합니다.
다음을 포함하여 데이터를 덮어쓰거나 데이터를 삭제하는 DDL 및 DML 문: REPLACE TABLEINSERT OVERWRITETRUNCATE TABLEDROP TABLE 대상 보관 데이터 파일의 트랜잭션 로그 항목을 삭제된 것으로 표시합니다.
FSCK REPAIR TABLE 보관된 파일을 무시하고 수명 주기 정책에 도달하지 않은 파일만 확인합니다.

제한 사항 보기.

초기 오류 및 오류 메시지

보관된 파일을 검색하여 올바른 결과를 생성해야 하는 쿼리의 경우 Delta Lake에 대한 보관 지원을 구성하면 다음이 보장됩니다.

  • 쿼리는 보관된 파일에 액세스하려고 하면 초기에 실패하여 낭비되는 컴퓨팅을 줄이고 사용자가 쿼리를 신속하게 조정하고 다시 실행할 수 있도록 합니다.
  • 오류 메시지는 쿼리가 보관된 파일에 액세스하려고 했기 때문에 쿼리가 실패했음을 사용자에게 알릴 수 있습니다.

사용자는 SHOW ARCHIVED FILES 구문을 사용하여 복원해야 하는 파일 보고서를 생성할 수 있습니다. 보관된 파일 표시를 참조하세요.

Important

오류 Not enough files to satisfy LIMIT표시되는 경우 테이블에는 LIMIT지정한 레코드 수를 충족하기 위해 보관되지 않은 파일에 데이터 행이 충분하지 않습니다. 절을 LIMIT 낮추면 지정된 LIMIT행을 충족할 수 있는 충분한 비정부 행을 찾습니다.

보관 지원 사용

다음 예제 구문과 같이 기본 클라우드 수명 주기 관리 정책에 구성된 보관 간격을 수동으로 지정하여 델타 테이블용 Azure Databricks에서 보관 지원을 사용하도록 설정합니다.

ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');

보관 지원을 사용하도록 설정하면 지정된 기간보다 오래된 파일을 무시하도록 Azure Databricks에 효과적으로 지시합니다. 클라우드 개체 스토리지에 대해 수명 주기 정책을 설정하지 않고 이 설정을 사용하면 Azure Databricks는 지정된 임계값에 따라 파일을 무시하지만 데이터는 보관되지 않습니다.

Delta Lake는 클라우드 계정에 구성된 수명 주기 관리 정책과 직접 상호 작용하지 않습니다. 클라우드 계정에서 정책을 업데이트하는 경우 Delta 테이블에서 정책을 업데이트해야 합니다. 수명 주기 관리 전환 규칙 변경을 참조하세요.

Important

보관 지원은 전적으로 호환되는 Azure Databricks 컴퓨팅 환경에 의존하며 델타 테이블에만 작동합니다. 보관 지원을 구성해도 OSS Delta Lake 클라이언트 또는 Databricks Runtime 12.2 LTS 이하의 동작, 호환성 또는 지원은 변경되지 않습니다.

보관된 파일 표시

지정된 쿼리를 완료하기 위해 복원해야 하는 파일을 식별하려면 다음 예제와 같이 사용합니다 SHOW ARCHIVED FILES.

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

이 작업은 보관된 파일에 대한 URI를 Spark DataFrame으로 반환합니다. 개체 저장소 제공업체의 문서화된 지침에 따라 필요한 보관된 파일을 복원합니다. Azure Databricks가 복원된 데이터를 확인하는 방법에 대한 자세한 내용은 복원된 데이터에 대한 Azure Databricks 샘플은 어떻게 합니까?를 참조하세요.

참고 항목

이 작업 중에 Delta Lake는 트랜잭션 로그에 포함된 데이터 통계에만 액세스할 수 있습니다. 기본적으로 테이블의 처음 32개 열에서 수집된 통계는 다음과 같습니다.

  • 최소값
  • 최대값
  • Null 개수
  • 총 레코드 수

반환된 파일에는 조건자를 충족하는 레코드가 파일에 있는지 여부를 확인하기 위해 읽어야 하는 보관된 모든 파일이 포함됩니다. Databricks는 복원해야 하는 파일 수를 줄이기 위해 데이터가 분할, z 순서 또는 클러스터링되는 필드를 포함하는 조건자를 제공하는 것이 좋습니다.

보관된 데이터 업데이트 또는 삭제

또는 보관된 파일의 MERGEUPDATEDELETE 데이터에 영향을 주는 작업을 실행하면 작업이 실패합니다. 이러한 작업을 실행하려면 빠른 검색을 지원하는 스토리지 계층으로 데이터를 복원해야 합니다. SHOW ARCHIVED FILES 사용하여 복원해야 하는 파일을 확인합니다.

복원된 데이터에 대한 Azure Databricks 샘플은 어떻게 할까요?

Azure Databricks는 보관 지원을 사용하도록 설정된 테이블에 대한 검사를 준비할 때 쿼리에 필요한 지정된 보존 기간보다 오래된 파일을 샘플링하여 파일이 복원되었는지 여부를 확인합니다.

결과에 보관된 것으로 추정되는 샘플링된 파일이 복원된 것으로 표시되면 Azure Databricks는 쿼리에 대한 모든 파일이 복원되고 쿼리가 처리된다고 가정합니다.

제한 사항

다음 제한 사항이 존재합니다.

  • 파일 생성 시간을 기반으로 하지 않는 수명 주기 관리 정책에 대한 지원이 없습니다. 여기에는 액세스 시간 기반 정책 및 태그 기반 정책이 포함됩니다.
  • 보관된 파일이 있는 테이블에서는 DROP COLUMN 사용할 수 없습니다.
  • REORG TABLE APPLY PURGE 는 최상의 시도를 하지만 삭제 벡터 파일 및 보관되지 않은 참조된 데이터 파일에서만 작동합니다. PURGE 는 보관된 삭제 벡터 파일을 삭제할 수 없습니다.
  • 수명 주기 관리 전환 규칙을 확장하면 예기치 않은 동작이 발생합니다. 수명 주기 관리 전환 규칙 확장을 참조하세요.

수명 주기 관리 전환 규칙 변경

클라우드 수명 주기 관리 전환 규칙의 시간 간격을 변경하는 경우 속성 delta.timeUntilArchived업데이트해야 합니다.

보관 전 시간 간격이 단축되는 경우(파일 생성 이후 더 적은 시간) 테이블 속성이 업데이트된 후에도 델타 테이블에 대한 보관 지원이 정상적으로 계속 작동합니다.

수명 주기 관리 전환 규칙 확장

보관 전 시간 간격이 연장되면(보관이 트리거되기 전에 더 많은 시간을 추가하기 위해) 속성을 delta.timeUntilArchived 새 값으로 업데이트하면 오류가 발생할 수 있습니다. 클라우드 공급자는 데이터 보존 정책이 변경될 때 보관된 스토리지에서 파일을 자동으로 복원하지 않습니다. 즉, 이전에 보관에 적합했지만 지금은 보관에 적합한 것으로 간주되지 않는 파일은 여전히 보관됩니다.

Important

오류를 방지하려면 속성 delta.timeUntilArchived 가장 최근에 보관된 데이터의 실제 기간보다 큰 값으로 설정하지 마세요.

보관 시간 간격이 60일에서 90일로 변경되는 시나리오를 고려합니다.

  1. 정책이 변경되면 60일에서 90일 사이의 모든 레코드가 보관됩니다.
  2. 30일 동안 새 파일은 보관되지 않습니다(정책이 확장될 때 가장 오래된 보관되지 않은 파일은 60일).
  3. 30일 후 수명 주기 정책은 보관된 모든 데이터를 올바르게 설명합니다.

delta.timeUntilArchived 설정은 델타 트랜잭션 로그에 기록된 파일 생성 시간에 대해 설정된 시간 간격을 추적합니다. 기본 정책에 대한 명시적 지식이 없습니다. 이전 보관 임계값과 새 보관 임계값 사이의 지연 기간 동안 보관된 파일을 쿼리하지 않도록 다음 방법 중 하나를 사용할 수 있습니다.

  1. 모든 파일을 보관할 수 있는 충분한 시간이 경과할 때까지 이전 임계값으로 설정을 delta.timeUntilArchived 그대로 둘 수 있습니다.
    • 위의 예제에 따라 처음 30일 동안 매일 다른 날짜의 데이터를 Azure Databricks에서 보관하는 것으로 간주하지만 클라우드 공급자가 보관해야 합니다. 이로 인해 오류가 발생하지는 않지만 쿼리할 수 있는 일부 데이터 파일은 무시됩니다.
    • 30일 후에 delta.timeUntilArchived90 days로 업데이트하세요.
  2. 지연 기간 동안 현재 간격을 반영하도록 매일 delta.timeUntilArchived 설정을 업데이트할 수 있습니다.
    • 클라우드 정책은 90일로 설정되지만 보관된 데이터의 실제 기간은 실시간으로 변경됩니다. 예를 들어 7일 후에 보관된 모든 데이터 파일의 기간을 정확하게 반영하도록 delta.timeUntilArchived 설정합니다67 days.
    • 이 방법은 핫 계층의 모든 데이터에 액세스해야 하는 경우에만 필요합니다.

참고 항목

값을 delta.timeUntilArchived 업데이트해도 보관되는 데이터는 변경되지 않습니다. Azure Databricks가 보관된 것처럼 취급하는 데이터만 변경합니다.