Azure Databricks의 보관 지원

중요합니다

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

Azure Databricks에서 아카이브 지원을 통해 Delta Lake 테이블이 저장된 클라우드 객체 저장소에 클라우드 기반 라이프사이클 정책을 사용할 수 있습니다. Delta Lake 테이블에서 보관 지원을 사용하도록 설정하면 테이블에서 지정된 기간보다 오래된 파일을 무시하도록 Azure Databricks에 효과적으로 지시합니다.

클라우드 라이프사이클 정책은 오래된 파일을 아카이브 스토리지 계층으로 옮겨 스토리지 비용을 절감합니다. 아카이브 지원이 없으면, 라이프사이클 정책이 Delta Lake 테이블에 대한 쿼리를 깨뜨릴 수 있는데, 이는 쿼리가 읽는 데이터 파일이 더 이상 제공되지 않기 때문입니다. 왜 아카이브 지원을 활성화해야 하나요?를 참조하세요.

아카이브 지원 사용 시기

다음 조건이 모두 맞을 때 테이블에서 아카이브 지원을 활성화하세요:

  • 파일 생성 시간에 따라 테이블의 데이터 파일을 아카이브하는 라이프사이클 정책을 사용합니다.
  • 대부분의 쿼리는 최근 데이터를 읽거나 보관된 파일을 제외합니다.
  • 아카이브 데이터가 필요한 쿼리는 드물며, 누군가가 클라우드 제공업체의 저장소에서 해당 파일을 복원할 때까지 기다린 후 쿼리를 다시 실행할 수 있습니다. 보관된 파일 복원을 참조하세요.

쿼리가 정기적으로 테이블의 전체 기록을 스캔한다면 아카이브 지원을 사용하지 마세요. 보관된 파일이 필요한 쿼리는 실패합니다. 아카이브 지원은 접근 시간이나 태그에 기반한 라이프사이클 정책과도 작동하지 않습니다. 제한 사항 보기.

요구 사항

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

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

아카이브 지원은 아카이브 파일을 건드리지 않고 올바른 결과를 반환하는 쿼리만 허용합니다. 이러한 쿼리에는 다음 중 하나가 포함됩니다.

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

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

중요합니다

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

Azure Databricks에서 테이블에 대한 보관 지원을 사용하도록 설정해도 클라우드 개체 스토리지에 대해 정의된 수명 주기 정책을 만들거나 변경하지 않습니다. 수명 주기 관리 전환 규칙 변경을 참조하세요.

아카이브 지원이 없으면 데이터 파일이나 트랜잭션 로그 파일이 보관된 위치로 이동해 쿼리 시 접근할 수 없게 되어 델타 레이크 테이블에 대한 작업이 실패할 수 있습니다. 보관 지원은 가능한 경우 보관된 데이터를 쿼리하지 않도록 최적화를 도입합니다. 또한 쿼리를 완료하기 위해 보관 스토리지에서 복원해야 하는 파일을 식별하는 새 구문을 추가합니다.

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

Azure Databricks의 Archival 지원은 Delta Lake 테이블에 대한 이러한 쿼리를 최적화합니다.

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

초기 오류 및 오류 메시지

정확한 결과를 생성하기 위해 보관된 파일을 스캔해야 하는 쿼리의 경우, 델타 레이크에 대한 아카이브 지원 설정을 하면 다음과 같은 효과가 있습니다:

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

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

중요합니다

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

보관 기능 활성화

Delta Lake 테이블에 대한 아카이브 지원을 활성화하려면 기본 클라우드 라이프사이클 관리 정책에 구성된 아카이브 간격을 수동으로 지정해야 합니다.

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

timeUntilArchived 시간을 설정하면 지정된 기간보다 오래된 Delta Lake 테이블의 파일을 무시하도록 Azure Databricks에 지시합니다. 이 설정은 클라우드 계정의 수명 주기 정책과는 별개입니다. 변경 내용은 다른 변경 내용에 영향을 미치지 않습니다. 클라우드 계정에서 수명 주기 정책을 업데이트하는 경우 Delta Lake 테이블의 보관 설정도 업데이트해야 합니다. 수명 주기 관리 전환 규칙 변경을 참조하세요.

클라우드 계정에서 새 수명 주기 정책을 설정하면 변경 내용이 적용되는 데 최대 24시간이 걸릴 수 있습니다. 수명 주기 관리 정책 실행을 참조하세요.

클라우드 개체 스토리지에 대해 설정된 수명 주기 정책 없이 이 설정을 사용하도록 설정하면 보관 지원을 통해 쿼리가 성공할 수 있으며, 결과에는 보관용으로 표시된 파일의 데이터가 포함됩니다. 복원된 데이터에 대한 Azure Databricks 샘플은 어떻게 수행하나요?를 참조하세요.

경고

클라우드 수명 주기 정책은 델타 트랜잭션 로그(_delta_log/ 디렉터리)를 보관해서는 안 됩니다. 제한 사항 보기.

중요합니다

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

보관된 파일 표시

지정된 쿼리를 완료하기 위해 복원해야 하는 파일을 식별하려면 SHOW ARCHIVED FILES을 사용하십시오.

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

이 작업은 아카이브된 파일의 파일명을 포함하는 Spark DataFrame을 반환합니다. 개체 저장소 제공업체의 문서화된 지침에 따라 필요한 보관된 파일을 복원합니다. 보관된 파일 복원을 참조하세요.

Azure Databricks가 복원된 데이터를 확인하는 방법에 대한 자세한 내용은 복원된 데이터에 대한 Azure Databricks 샘플은 어떻게 합니까?를 참조하세요.

참고

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

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

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

보관된 파일 복원

복원이 필요한 모든 파일을 식별하려면 보관된 파일 목록을 보는 데 사용합니다 SHOW ARCHIVED FILES .

리하일레이트 API를 사용하여 파일을 온라인 스토리지 계층으로 복원합니다. 보관 계층에서 Blob 리하일레이션을 참조하세요.

클라우드 공급자 스토리지에서 파일을 복원한 후 테이블을 쿼리할 수 있습니다. 보관 지원은 복원된 파일을 자동으로 인식합니다. Azure Databricks가 복원된 데이터를 확인하는 방법에 대한 자세한 내용은 복원된 데이터에 대한 Azure Databricks 샘플은 어떻게 합니까?를 참조하세요.

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

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

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

Azure Databricks는 보관 지원을 사용하도록 설정된 테이블에 대한 검사를 준비할 때 쿼리에 필요한 지정된 보존 기간보다 오래된 파일을 샘플링하여 파일이 복원되었는지 여부를 확인합니다. 결과에 보관된 것으로 추정되는 샘플링된 파일이 복원된 것으로 표시되면 Azure Databricks는 쿼리에 대한 모든 파일이 복원되고 쿼리가 처리된다고 가정합니다. 결과에는 보관용으로 표시된 파일의 데이터가 포함됩니다.

샘플링은 모든 쿼리에 적용되지 않을 수 있습니다. 제한 사항을 참조하세요.

제한 사항

아카이브 지원에는 다음과 같은 제한이 있습니다:

  • 보관 지원은 데이터 파일에만 적용됩니다. 델타 트랜잭션 로그(_delta_log/ 디렉터리)의 파일이 보관된 스토리지 계층으로 이동되면 테이블에 완전히 액세스할 수 없게 되고 테이블에 대한 모든 쿼리가 실패합니다. 경로가 보관에 포함되지 않도록 _delta_log/ 클라우드 수명 주기 정책을 구성해야 합니다. S3 수명 주기 구성의 예제를 참조하세요.
  • 파일 생성 시간을 기반으로 하지 않는 수명 주기 관리 정책에 대한 지원이 없습니다. 여기에는 액세스 시간 기반 정책 및 태그 기반 정책이 포함됩니다.
  • 보관된 파일이 있는 테이블에서는 DROP COLUMN 사용할 수 없습니다.
  • REORG TABLE APPLY PURGE 는 최상의 시도를 하지만 삭제 벡터 파일 및 보관되지 않은 참조된 데이터 파일에서만 작동합니다. PURGE 는 보관된 삭제 벡터 파일을 삭제할 수 없습니다.
  • 수명 주기 관리 전환 규칙을 확장하면 예기치 않은 동작이 발생합니다. 수명 주기 관리 전환 규칙 확장을 참조하세요.
  • LIMIT 보관 지원이 설정된 테이블의 쿼리는 복원된 데이터에 대한 샘플링을 트리거하지 않습니다. 테이블의 데이터가 복원되면 복원된 데이터를 쿼리할 때 대부분의 쿼리가 성공하지만 쿼리는 LIMIT 오류를 반환합니다 DELTA_ARCHIVED_FILES_IN_LIMIT . 복원된 데이터에 대한 Azure Databricks 샘플은 어떻게 수행하나요?를 참조하세요.

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

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

아카이브 전 시간 간격이 줄어들면(파일 생성 후 경과 시간이 더 짧으면), 테이블 속성이 업데이트된 후에도 델타 레이크 테이블에 대한 아카이브 지원은 정상적으로 계속 작동합니다.

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

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

중요합니다

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

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

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

delta.timeUntilArchived 설정은 델타 트랜잭션 로그에 기록된 파일 생성 시간에 대해 설정된 시간 간격을 추적합니다. 기본 정책에 대한 명시적 지식이 없습니다. 이전 아카이브 임계값과 새 아카이브 임계값 사이의 지연 기간 동안, 아카이브 파일을 조회하지 않기 위해 다음과 같은 방법을 사용할 수 있습니다:

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

참고

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