다음을 통해 공유


Azure Databricks의 보관 지원

Important

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

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

Important

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

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

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

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

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

Important

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

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

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

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

Azure Databricks의 보관 지원은 Delta tables에 대해 다음 쿼리를 최적화합니다.

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

제한 사항 보기.

초기 오류 및 오류 메시지

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

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

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

Important

오류 Not enough files to satisfy LIMITget 경우 tableLIMIT지정한 레코드 수를 충족하기에 충분한 데이터 행이 비정부 파일에 없습니다. 절을 LIMIT 낮추면 지정된 LIMIT행을 충족할 수 있는 충분한 비정부 행을 찾습니다.

보관 지원 사용

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

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

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

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

Important

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

보관된 파일 표시

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

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

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

참고 항목

이 작업 중에 Delta Lake는 트랜잭션 로그에 포함된 데이터 통계에만 액세스할 수 있습니다. 기본적으로 다음은 table의 처음 32개 columns에 대해 수집된 통계입니다.

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

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

Update 또는 보관된 데이터 삭제

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

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

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

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

제한 사항

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

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

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

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

보관 전 시간 간격이 단축되는 경우(파일을 만든 후 시간이 줄어도) delta table 대한 보관 지원은 table 속성이 업데이트된 후에도 정상적으로 작동합니다.

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

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

Important

오류를 방지하려면 속성이 가장 최근에 보관된 데이터의 실제 기간보다 큰 값으로 delta.timeUntilArchivedset 않습니다.

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

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

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

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

참고 항목

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