테이블 속성 참조

Delta Lake 및 Apache Iceberg 테이블은 테이블 속성을 사용하여 데이터 레이아웃, 파일 크기, 데이터 건너뛰기, 격리 수준 및 변경 데이터 피드를 비롯한 동작 및 기능을 구성합니다.

메모

테이블 속성을 설정하거나 업데이트하는 모든 작업은 다른 동시 쓰기 작업과 충돌하여 작업 실패를 유발할 수 있습니다. Databricks의 권장 사항에 따라 테이블에 대한 동시 쓰기 작업이 없는 경우에만 테이블 속성을 수정하는 것이 좋습니다.

테이블 속성 수정

기존 테이블의 테이블 속성을 수정하려면 SET TBLPROPERTIES사용합니다.

Delta 및 Iceberg 속성 접두사

Delta Lake 및 Apache Iceberg 테이블은 동일한 테이블 속성 이름을 공유하지만 다른 접두사를 필요로 합니다.

  • Delta Lake 테이블: 접두사 delta. 사용
  • 빙산 테이블: 접두사 iceberg. 사용

예를 들어 테이블에서 삭제 벡터를 사용하도록 설정하려면 다음을 수행합니다.

델타 호수

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Iceberg

ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

테이블 속성 및 SparkSession 속성

각 테이블에는 해당 동작을 제어하는 고유한 테이블 속성이 있습니다. 일부 SparkSession 구성은 항상 테이블 속성을 재정의합니다. 예를 들어 autoCompact.enabledoptimizeWrite.enabled 수준에서 자동 압축 및 최적화된 쓰기를 SparkSession 사용하도록 설정합니다. Databricks는 대부분의 워크로드에 대해 테이블 범위 구성을 사용하는 것을 권장합니다.

구성을 사용하여 SparkSession 새 테이블에 대한 기본값을 설정할 수 있습니다. 이러한 기본값은 새 테이블에만 적용되며 기존 테이블 속성에는 영향을 주지 않습니다. SparkSession 구성은 다음 표와 같이 테이블 속성과 다른 접두사를 사용합니다.

테이블 속성 SparkSession 구성
delta.<conf>
iceberg.<conf>
spark.databricks.delta.properties.defaults.<conf>
spark.databricks.iceberg.properties.defaults.<conf>

예를 들어 세션에서 만든 모든 새 테이블에 대한 속성을 설정 appendOnly = true 하려면 다음을 설정합니다.

델타 호수

SET spark.databricks.delta.properties.defaults.appendOnly = true

Iceberg

SET spark.databricks.iceberg.properties.defaults.appendOnly = true

테이블 속성

다음 테이블 속성의 대부분은 표시된 경우를 제외하고 Delta Lake 및 Apache Iceberg 테이블 모두에 사용할 수 있습니다. Delta Lake 테이블의 delta. 접두사 및 iceberg. Iceberg 테이블의 접두사를 사용합니다.

재산 Description
appendOnly true 테이블을 오직 추가만 가능하도록 설정합니다. 추가 전용 테이블은 기존 레코드를 삭제하거나 기존 값을 업데이트할 수 없습니다.
데이터 형식: Boolean
기본값: false
autoOptimize.autoCompact 작은 파일 문제를 줄이기 위해 테이블 파티션 내의 작은 파일을 자동으로 결합합니다. auto 수락(권장), true또는 legacyfalse.
자동 압축을 참조하세요.
데이터 형식: String
기본값: (none)
autoOptimize.optimizeWrite true 쓰기 중에 이 테이블의 파일 레이아웃을 자동으로 최적화합니다.
최적화된 쓰기를 참조하세요.
데이터 형식: Boolean
기본값: (none)
checkpoint.writeStatsAsJson true 열의 stats 열에 대해 JSON 형식의 검사점에서 파일 통계를 작성합니다.
데이터 형식: Boolean
기본값: false
checkpoint.writeStatsAsStruct true 열의 파일 통계를 구조체 형식으로 검사점에 기록하고, 파티션 값을 stats_parsed 구조체로 작성하려면.
데이터 형식: Boolean
기본값: true
checkpointPolicy classic 클래식 검사점의 경우 v2: v2 검사점의 경우
액체 클러스터링이 있는 테이블에 대한검사점 V2 및 호환성을 참조하세요.
데이터 형식: String
기본값: classic
columnMapping.mode 테이블 열 및 다른 이름을 사용하는 해당 Parquet 열에 대한 열 매핑을 사용하도록 설정합니다. 유효한 값은 none, nameid입니다.
Delta Lake 열 매핑을 사용하여 열 이름 바꾸기 및 삭제를 참조하세요.
참고: columnMapping.mode을(를) 사용 설정하면 randomizeFilePrefixes도 자동으로 활성화됩니다.
데이터 형식: DeltaColumnMappingMode
기본값: none
compatibility.symlinkFormatManifest.enabled (Delta Lake에만 해당) true 테이블의 모든 쓰기 작업이 매니페스트를 자동으로 업데이트하도록 Delta Lake 테이블을 구성합니다.
데이터 형식: Boolean
기본값: false
dataSkippingNumIndexedCols 데이터 건너뛰기 통계 수집에 필요한 열의 수입니다. -1 값은 모든 열에 대한 통계를 수집함을 의미합니다.
데이터 건너뛰기 참조
데이터 형식: Int
기본값: 32
dataSkippingStatsColumns 데이터 건너뛰기 기능을 향상시키기 위해 통계를 수집할 열 이름의 쉼표로 구분된 목록입니다. 이 속성은 dataSkippingNumIndexedCols 보다 우선 사용됩니다.
데이터 건너뛰기 참조
데이터 형식: String
기본값: (none)
deletedFileRetentionDuration 물리적으로 삭제하기 전에 논리적으로 삭제된 데이터 파일을 유지하는 가장 짧은 기간입니다. 이를 통해 데이터 압축 또는 파티션 덮어쓰기 후 오래된 리더의 오류를 방지할 수 있습니다.
Databricks는 기본값인 7일 이상을 권장합니다. 보존 기간이 너무 짧은 경우 장기 실행 작업은 작업이 완료되기 전에 커밋되지 않은 파일을 삭제할 수 있습니다.
시간 이동 쿼리에 대한 데이터 보존 구성을 참조하세요.
데이터 형식: CalendarInterval
기본값: interval 1 week
enableChangeDataFeed true 변경 데이터 피드를 활성화합니다.
변경 데이터 피드 사용을 참조하세요.
데이터 형식: Boolean
기본값: false
enableDeletionVectors true로 설정하면 삭제 벡터와 업데이트를 위한 예측 I/O를 활성화합니다.
Databricks의 삭제 벡터삭제 벡터 사용 설정을 참조하세요.
데이터 형식: Boolean
기본값: 작업 영역 관리자 설정 및 Databricks 런타임 버전에 따라 달라집니다. 삭제 벡터 자동 사용을 참조하세요.
enableIcebergCompatV2 (Delta Lake에만 해당) true IcebergCompatV2를 활성화하기 위해, Iceberg 리더기와 호환되는 형식으로 데이터를 작성합니다. 아이스버그 리드를 가능하게 하려면, 이 속성을 와 universalFormat.enabledFormats함께 설정하세요.
Iceberg 클라이언트를 사용하여 Delta Lake 테이블 읽기를 참조하세요.
데이터 형식: Boolean
기본값: (none)
enableRowTracking (Delta Lake에만 해당) true 행 추적을 가능하게 하여 각 행에 안정적인 행 ID와 행 커밋 버전을 할당하여 행 수준 계보를 수행합니다. Databricks 런타임 14.0 이상에서 제공됩니다. Apache Iceberg v3 테이블은 자동으로 행 추적을 포함합니다.
Azure Databricks 행 추적을 참조하세요.
데이터 형식: Boolean
기본값: false
enableTypeWidening true 형식 확대를 사용하도록 설정합니다.
타입 확장을 참조하세요.
데이터 형식: Boolean
기본값: false
format-version (Apache Iceberg 관리 테이블만 해당) Iceberg 테이블 형식 버전입니다.
Databricks는 이 속성을 수동으로 구성하는 것을 권장하지 않습니다.
Apache Iceberg v3 기능 사용을 참조하세요.
데이터 형식: Int
기본값: 2
isolationLevel 트랜잭션이 동시 트랜잭션에 의해 수정되지 않도록 격리해야 하는 정도입니다.
유효한 값은 SerializableWriteSerializable입니다.
격리 수준(WriteSerializable 및 Serializable)을 참조하세요.
데이터 형식: String
기본값: WriteSerializable
logRetentionDuration 테이블 기록을 얼마나 오랫동안 보관할지. VACUUM 작업은 이 보존 임계값을 무시합니다.
Databricks는 검사점을 작성할 때마다 보존 간격보다 오래된 로그 항목을 자동으로 정리합니다. 이 속성을 큰 값으로 설정하면 많은 로그 항목이 유지됩니다. 로그에 대한 작업은 일정한 시간이므로 성능에 영향을 주지 않습니다. 기록에 대한 작업은 병렬이지만 로그 크기가 증가함에 따라 비용이 더 많이 듭니다.
시간 이동 쿼리에 대한 데이터 보존 구성을 참조하세요.
데이터 형식: CalendarInterval
기본값: interval 30 days
minReaderVersion (Delta Lake에만 해당) 이 테이블에서 읽는 데 필요한 최소 프로토콜 판독기 버전입니다.
Databricks는 이 속성을 수동으로 구성하는 것을 권장하지 않습니다.
Delta Lake 기능 호환성 및 프로토콜을 참조하세요.
데이터 형식: Int
기본값: 1
minWriterVersion (Delta Lake에만 해당) 이 테이블에 쓰는 데 필요한 최소 프로토콜 작성기 버전입니다.
Databricks는 이 속성을 수동으로 구성하는 것을 권장하지 않습니다.
Delta Lake 기능 호환성 및 프로토콜을 참조하세요.
데이터 형식: Int
기본값: 2
parquet.compression.codec 테이블의 압축 코덱입니다.
유효한 값: ZSTD, SNAPPY, GZIP, LZ4BROTLI (지원은 형식에 따라 다름)
Databricks Runtime 16.0 이상에서 이 속성을 설정하면 선택한 코덱이 테이블에 대한 모든 향후 쓰기에 적용되어 클러스터나 세션 기본값을 덮어씁니다(spark.sql.parquet.compression.codec). 이 테이블 속성을 데이터프레임 .write.option("compression", "...")로 덮어쓸 수 있습니다. 속성을 설정한다고 해서 기존 파일이 다시 쓰이는 것은 아닙니다. 선택한 코덱 OPTIMIZE table_name FULL으로 기존 데이터를 재압축하려면 . Unity Catalog가 관리하는 Delta Lake 테이블의 경우, Databricks는 테이블을 생성할 때 명시적으로 (ZSTD)로 쓰 parquet.compression.codec 기 때문에 별도의 Delta 기본값 spark.databricks.delta.properties.defaults.parquet.compression.codec 은 영향을 주지 않습니다. 새로운 외부 델타 레이크 테이블 spark.databricks.delta.properties.defaults.parquet.compression.codec을 사용하려면 .
데이터 형식: String
기본값: ZSTD
parquet.format.version (Delta Lake에만 해당) 데이터 파일을 작성할 때 사용되는 Parquet 형식 버전입니다. 고급 인코딩, v2 데이터 페이지 헤더 및 2.12.0 타임스탬프를 사용하도록 설정하면 INT64 쿼리 성능을 향상시키고 스토리지 공간을 줄일 수 있습니다.
유효한 값은 1.0.02.12.0의 릴리스에 해당하는 값입니다.
이 속성은 Delta Lake 및 Apache Iceberg 테이블에 설정할 수 있습니다. 일부 OSS Iceberg 판독기는 Parquet v2 인코딩을 지원하지 않을 수 있습니다. 제한 사항을 참조하세요.
Parquet v2를 참조하세요.
데이터 형식: String
기본값: 1.0.0
randomizeFilePrefixes true 파티션 정보 대신 파일 경로에 대한 임의의 접두사를 생성합니다.
데이터 형식: Boolean
기본값: false
randomPrefixLength 임의 접두사 randomizeFilePrefixestrue일 때 생성할 문자 수입니다.
데이터 형식: Int
기본값: 2
setTransactionRetentionDuration 새 스냅샷이 트랜잭션 식별자를 유지하는 가장 짧은 기간(예: SetTransactions)입니다. 새 스냅샷이 만료되고 이 속성에 지정된 기간보다 오래되었거나 같은 트랜잭션 식별자를 무시합니다. SetTransaction 식별자는 기록을 idempotent하게 만들 때 사용됩니다. foreachBatch 자세한 내용은 idempotent 테이블 쓰기 사용을 참조하세요.
데이터 형식: CalendarInterval
기본값: (none)
targetFileSize 파일 튜닝을 위한 대상 파일 크기(바이트 이상). 예를 들어 104857600(바이트) 또는 100mb입니다.
컨트롤 데이터 파일 크기를 참조하세요.
데이터 형식: String
기본값: (none)
universalFormat.enabledFormats (Delta Lake에만 해당) 외부 클라이언트가 Delta Lake 테이블(UniForm)을 읽을 수 있도록 메타데이터를 생성할 수 있는 쉼표 구분된 형식 목록입니다. Iceberg iceberg 메타데이터를 생성하도록 설정하세요. 설정은 iceberg 필요합니다 enableIcebergCompatV2 = true.
Iceberg 클라이언트를 사용하여 Delta Lake 테이블 읽기를 참조하세요.
데이터 형식: String
기본값: (none)