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, name 및 id입니다.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 |
트랜잭션이 동시 트랜잭션에 의해 수정되지 않도록 격리해야 하는 정도입니다. 유효한 값은 Serializable 및 WriteSerializable입니다.격리 수준(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 |
임의 접두사 randomizeFilePrefixes가 true일 때 생성할 문자 수입니다.데이터 형식: 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) |