데이터 건너뛰기 인덱스

Important

DATASKIPPING INDEX는 Databricks Runtime 7.0에서 제거되었습니다. 대신 향상된 데이터 건너뛰기 기능을 제공하는 델타 테이블을 사용하는 것이 좋습니다.

Important

이 설명서는 사용 중지되었으며 업데이트되지 않을 수 있습니다. 이 콘텐츠에 언급된 제품, 서비스 또는 기술은 더 이상 지원되지 않습니다. Delta Lake에 대한 데이터 건너뛰기 참조

설명

파티션 정리 외에도 Databricks Runtime에는 관련 없는 데이터, 즉 데이터 건너뛰기 인덱스를 검사하지 않도록 하는 또 다른 기능이 포함되어 있습니다. 파일 세분성에서 추가 건너뛰기를 수행하기 위해 파일 수준 통계를 사용합니다. 이는 Hive 스타일 분할과 함께 작동하지만 이에 의존하지는 않습니다.

데이터 건너뛰기의 효과는 데이터의 특성과 실제 레이아웃에 따라 달라집니다. 건너뛰기는 파일 세분성에서 수행되므로 데이터를 여러 파일에 걸쳐 수평으로 분할하는 것이 중요합니다. 이는 일반적으로 여러 추가 작업, (순서 섞기) 분할, 버킷팅 및/또는 spark.sql.files.maxRecordsPerFile 사용의 결과로 발생합니다. 정렬된 버킷(df.write.bucketBy(...).sortBy(...).saveAsTable(...) / CREATE TABLE ... CLUSTERED BY ... SORTED BY ...) 또는 파티션 키와 상관 관계가 있는 열(예: brandName - modelName, companyID - stockPrice)이 포함된 테이블에서 가장 잘 작동하지만 데이터가 정렬/클러스터형(예: orderID, bitcoinValue)을 나타내는 경우에도 마찬가지입니다.

참고 항목

이 베타 기능에는 여러 가지 중요한 제한 사항이 있습니다.

  • 옵트인: 테이블별로 수동으로 사용하도록 설정해야 합니다.
  • SQL 전용: 이에 대한 DataFrame API가 없습니다.
  • 테이블이 인덱싱되면 인덱스가 명시적으로 REFRESHed될 때까지 후속 INSERT 또는 ADD PARTITION 작업의 효과가 표시되지 않을 수 있습니다.

SQL 구문

인덱스 만들기

CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name

첫 번째(즉, 맨 왼쪽) N 지원 열에 대해 지정된 테이블에서 데이터 건너뛰기를 사용하도록 설정합니다. 여기서 Nspark.databricks.io.skipping.defaultNumIndexedCols(기본값: 32)로 제어됩니다.

partitionBy 열은 항상 인덱싱되며 이 N에 포함되지 않습니다.

열에 대한 인덱스 만들기

CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
    FOR COLUMNS (col1, ...)

지정된 열 목록에 대해 지정된 테이블에서 데이터 건너뛰기를 사용하도록 설정합니다. 위와 마찬가지로 모든 partitionBy 열은 지정된 열 외에 항상 인덱싱됩니다.

인덱스 설명

DESCRIBE DATASKIPPING INDEX [EXTENDED] ON [TABLE] [db_name.]table_name

수집되는 해당 형식의 파일 수준 통계와 함께 인덱싱되는 지정된 테이블의 열을 표시합니다.

EXTENDED가 지정한 경우 DataSkipping이 해당 열의 필터에 얼마나 도움이 될 것으로 예상하는지 대략적인 측정값을 제공하는 "effectiveness_score"라는 세 번째 열이 표시됩니다.

전체 인덱스 새로 고침

REFRESH DATASKIPPING INDEX ON [TABLE] [db_name.]table_name

전체 인덱스를 다시 빌드합니다. 즉, 테이블의 모든 파티션이 다시 인덱싱됩니다.

파티션 새로 고침

REFRESH DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
    PARTITION (part_col_name1[=val1], part_col_name2[=val2], ...)

지정된 파티션만 다시 인덱싱합니다. 이 작업은 일반적으로 전체 인덱스 새로 고침보다 빠릅니다.

인덱스 삭제

DROP DATASKIPPING INDEX ON [TABLE] [db_name.]table_name

지정된 테이블에서 데이터 건너뛰기를 사용하지 않도록 설정하고 모든 인덱스 데이터를 삭제합니다.