Delta Lake에 대한 데이터 건너뛰기
참고 항목
Databricks Runtime 13.3 이상에서 Databricks는 Delta table 레이아웃에 대해 리퀴드 클러스터링을 사용하는 것을 권장합니다. 클러스터링이 Z 순서 지정과 호환되지 않습니다. 델타
데이터를 델타 table에 쓸 때 데이터 건너뛰기 정보가 자동으로 수집됩니다. Azure Databricks의 Delta Lake는 쿼리 시간에 이 정보(최소 및 최대 values, null 개수 및 파일당 총 레코드)를 활용하여 더 빠른 쿼리를 제공합니다.
columns에 대한 수집된 통계가 ZORDER
문장에 사용되어야 합니다. Z 순서 지정이란?을 참조하세요.
델타 통계 columns 지정
Delta Lake는 기본적으로 tableschema정의된 처음 32개 columns에 대한 통계를 수집합니다. 예측 최적화를 사용하도록 설정하면 파일 건너뛰기 관련 통계가 지능적으로 선택되며 처음 32 columns에 국한되지 않습니다. 예측 최적화는 통계 수집 명령인 ANALYZE
를 Unity Catalog에서 관리되는 tables에 대해 자동으로 실행합니다. Databricks는 모든 Unity Catalog이 관리하는 tables에 대해 예측 최적화를 활성화하여 데이터 유지 관리 간소화 및 저장 비용 절감을 권장합니다. Unity
Important
예측 최적화 ANALYZE
는 공개 미리 보기로 제공됩니다. 여기에는 쓰기 중에 지능형 통계 수집이 포함됩니다. 공개 미리 보기에 등록하려면 이 양식을 사용합니다.
예측 최적화를 사용하지 않는 경우 다음 table 속성 중 하나를 설정하여 통계 컬렉션을 32개 columns 제한하는 동작을 수정할 수 있습니다.
Table 속성 | Databricks 런타임 지원 | 설명 |
---|---|---|
delta.dataSkippingNumIndexedCols |
지원되는 모든 Databricks 런타임 버전 | Delta가 통계를 수집하는 columns의 수를 늘리거나 줄입니다. column 순서에 따라 달라집니다. |
delta.dataSkippingStatsColumns |
Databricks Runtime 13.3 LTS 이상 | Delta Lake에서 통계를 수집하는 column 이름의 list 지정합니다. 대체합니다 dataSkippingNumIndexedCols . |
Table 속성은 table 생성 시 또는 ALTER TABLE
문을 사용하여 set 수 있습니다.
델타 table 속성 참조를 참조하세요.
이러한 속성을 업데이트해도 기존 데이터에 대한 통계가 자동으로 다시 계산되지는 않습니다. 오히려, table데이터를 추가하거나 업데이트할 때 미래 통계 수집의 동작에 영향을 미칩니다. Delta Lake는 현재 통계 list에 포함되지 않은 columns에 대한 통계 columns를 활용하지 않습니다.
Databricks Runtime 14.3 LTS 이상에서 table 속성을 변경하거나 통계에 대해 지정된 columns을 변경한 경우, 다음 명령을 사용하여 Delta table에 대한 통계를 다시 계산하도록 수동으로 트리거할 수 있습니다.
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
참고 항목
긴 문자열은 통계 수집 중에 잘립니다. 특히 columns 쿼리 필터링에 자주 사용되지 않는 경우 통계 컬렉션에서 긴 문자열 columns 제외하도록 선택할 수 있습니다.
Z 순서 지정이란?
참고 항목
Databricks는 모든 새로운 Delta tables에 대해 액체 클러스터링을 사용할 것을 권장합니다. 액체 클러스터링과 함께 사용할 ZORDER
수 없습니다.
Z 순서 지정은 파일의 동일한 ZORDER BY
절에서 columns을 지정합니다.
OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)
쿼리 조건자에서 column가 일반적으로 사용될 것으로 기대하며 해당 column의 카디널리티가 높을 경우(즉, 상이한 values의 수가 많은 경우) ZORDER BY
를 사용하십시오.
ZORDER BY
여러 columns 쉼표로 구분된 list지정할 수 있습니다. 그러나 추가되는 각 column마다 지역성의 효과는 감소합니다. 통계가 수집되지 않은 columns에 대한 Z 정렬은 효과가 없으며 리소스를 낭비하게 됩니다. 데이터 건너뛰기에는 최소, 최대 및 개수와 같은 column로컬 통계가 필요하기 때문입니다. 특정 columns에 대한 통계 수집을 구성하려면, schema에서 columns을 다시 정렬하거나 통계를 수집할 columns 수를 늘릴 수 있습니다.
참고 항목
Z 순서 지정은 idempotent 가 아니지만 증분 작업이 되는 것을 목표로 합니다. 여러 번 실행할 때 Z-순서 지정에 걸리는 시간이 감소한다는 보장은 없습니다. 그러나 방금 Z-정렬된 partition에 새 데이터가 추가되지 않은 경우, 해당 partition에 대한 또 다른 Z-정렬은 아무런 영향을 미치지 않습니다.
Z 순서 지정은 튜플 수와 관련하여 균등하게 균형 잡힌 데이터 파일을 생성하는 것을 목표로 하지만 반드시 디스크의 데이터 크기는 아닙니다. 두 측정값은 대부분 상관 관계가 있지만, 그렇지 않은 상황에서는 optimize 작업 시간에 왜곡이 발생할 수 있습니다.
예를 들어, 만약 당신이
ZORDER BY
날짜이고, 최근 기록들이 과거의 것들보다 훨씬 넓다면(예: 더 긴 배열이나 문자열 values),OPTIMIZE
작업의 업무 지속 시간이 왜곡될 뿐만 아니라 결과 파일 크기도 왜곡될 것으로 예상됩니다. 그러나 이는OPTIMIZE
명령 자체에 대한 문제일 뿐이며, 후속 쿼리에 부정적인 영향을 주지 않아야 합니다.