블룸 필터 인덱스
메모
Photon 기능을 지원하는 컴퓨팅과 Databricks Runtime 12.2 이상을 사용할 때, 예측 I/O가 읽기 성능에서 블룸 필터보다 뛰어납니다. 예측 I/O란?.
Databricks Runtime 13.3 이상에서는 델타 테이블 레이아웃에 클러스터링을 사용할 것을 Databricks가 권장합니다. 을 참조하여 델타 테이블에 액체 클러스터링을 사용하세요.
Databricks는 이러한 기능을 지원하지 않는 컴퓨팅을 사용하는 경우에만 블룸 필터를 사용하는 것이 좋습니다.
블룸 필터 인덱스는 선택한 열, 특히 임의 텍스트가 포함된 필드를 건너뛸 수 있는 공간 효율적인 데이터 구조입니다.
Bloom 필터 인덱스의 작동 방식
Azure Databricks Bloom 필터 인덱스는 각 데이터 파일에 대한 데이터 건너뛰기 인덱스로 구성됩니다. Bloom 필터 인덱스는 열 값이 파일에 확실히 없는지 () 또는 파일에 아마도 있는지 () 확인하는 데 사용할 수 있습니다. 파일을 읽기 전에 Azure Databricks는 인덱스 파일을 확인하고 인덱스가 파일이 데이터 필터와 일치할 수 있음을 나타내는 경우에만 파일을 읽습니다.
Bloom 필터는 다음 입력 데이터 형식을 가진 열을 지원합니다: byte
, short
, int
, long
, float
, double
, date
, timestamp
및 string
. Null은 Bloom 필터에 추가되지 않으므로 Null 관련 필터는 데이터 파일을 읽어야 합니다. Azure Databricks는 and
, or
, in
, equals
및 equalsnullsafe
데이터 원본 필터를 지원합니다. 블룸 필터는 중첩 열에서 지원되지 않습니다.
구성 및 참조
다음 구문을 사용하여 Bloom 필터를 사용하도록 설정합니다.
CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))
구문 세부 정보는 CREATE BLOOM FILTER INDEX 및 DROP BLOOM FILTER INDEX참조하세요.
Bloom 필터 작업을 사용하지 않도록 설정하려면 세션 수준 spark.databricks.io.skipping.bloomFilter.enabled
구성을 false
설정합니다.
블룸 필터 인덱스 목록 표시
인덱스 목록을 표시하려면 다음을 실행합니다.
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
예를 들어:
표시