Azure Databricks는 Delta Lake 테이블에 대한 열 매핑을 지원합니다. 이를 통해 메타데이터 전용 변경 내용이 데이터 파일을 다시 작성하지 않고도 열을 삭제되거나 이름이 바뀐 것으로 표시할 수 있습니다. 또한 사용자가 이전 문자 제약 조건으로 인해 열 이름을 바꿀 필요 없이 CSV 또는 JSON 데이터를 Delta로 직접 수집할 수 있도록 공백과 같이 Parquet에서 허용되지 않는 문자를 사용하여 델타 테이블 열의 이름을 지정할 수 있습니다.
중요
열 매핑을 사용하도록 설정된 테이블은 Databricks Runtime 10.4 LTS 이상에서만 읽을 수 있습니다.
델타 테이블을 읽기 위해 디렉터리 이름을 사용하는 레거시 패턴을 사용하는 경우 열 매핑을 사용하도록 설정하면 레거시 워크로드가 중단될 수 있습니다. 열 매핑을 사용하도록 설정된 분할된 테이블은 파티션 디렉터리에 열 이름 대신 임의의 접두사를 사용합니다. Delta Lake와 Parquet가 파티셔닝 전략을 공유하는지 참조하세요..
테이블에서 열 매핑을 사용하도록 설정하면 델타 변경 데이터 피드를 사용하는 다운스트림 작업이 중단될 수 있습니다. 열 매핑이 사용하도록 설정된 테이블에 대한 변경 데이터 피드 제한을 참조하세요.
테이블에서 열 매핑을 활성화하면 델타 테이블을 원본으로 사용한 스트리밍 읽기가 중단될 수 있으며, 이는 Lakeflow 선언적 파이프라인에서도 마찬가지입니다. 열 매핑 및 스키마 변경 내용이 포함된 스트리밍을 참조하세요.
열 매핑 사용
다음 명령을 사용하여 열 매핑을 사용하도록 설정합니다.
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
열 매핑에는 다음 델타 프로토콜이 필요합니다.
- 판독기 버전 2 이상.
- Writer 버전 5 이상.
Delta Lake 기능 호환성 및 프로토콜을 참조하세요.
열 매핑 사용 안 함
Databricks Runtime 15.3 이상에서는 이 명령을 사용하여 DROP FEATURE
테이블에서 열 매핑을 제거하고 테이블 프로토콜을 다운그레이드할 수 있습니다.
중요
테이블에서 열 매핑을 삭제해도 분할된 테이블의 디렉터리 이름에 사용되는 임의의 접두사는 제거되지 않습니다.
Delta Lake 테이블 기능 삭제 및 테이블 프로토콜 다운그레이드를 참조하세요.
열 이름 바꾸기
참고
Databricks Runtime 10.4 LTS 이상에서 지원됩니다.
Delta 테이블에 열 매핑을 활성화하면 열 이름을 바꿀 수 있습니다.
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
자세한 예제는 Delta Lake 테이블 스키마 업데이트를 참조하세요.
열 삭제
참고
Databricks Runtime 11.3 LTS 이상에서 지원됩니다.
Delta 테이블에 열 매핑을 활성화하면 하나 이상의 열을 삭제할 수 있습니다.
ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)
자세한 내용은 Delta Lake 테이블 스키마 업데이트를 참조하세요.
열 이름에서 지원되는 문자
델타 테이블에 대해 열 매핑을 사용하는 경우 테이블의 열 이름 ,;{}()\n\t=
에 공백과 이러한 문자를 포함할 수 있습니다.
열 매핑 및 스키마 변경 내용이 있는 스트리밍
스키마 추적 위치를 제공하여 열 매핑을 사용하도록 설정된 델타 테이블에서 스트리밍을 사용하도록 설정할 수 있습니다. 이렇게 하면 비가산적 스키마 변경으로 인해 스트림이 손상될 수 있는 문제가 해결됩니다.
데이터 원본에 대한 각 스트리밍 읽기는 고유한 schemaTrackingLocation
지정이 있어야 합니다. 지정된 schemaTrackingLocation
내용은 스트리밍 쓰기를 위해 checkpointLocation
대상 테이블의 지정된 디렉터리 내에 포함되어야 합니다. 여러 원본 델타 테이블의 데이터를 결합하는 스트리밍 워크로드의 경우 각 원본 테이블에 대해 고유한 디렉터리를 checkpointLocation
지정해야 합니다.
중요
현재 실행 중인 작업에서 열 매핑을 사용하도록 설정하려면 작업을 두 번 이상 중지하고 다시 시작해야 합니다(즉, 두 번 다시 시작).
- 첫 번째 다시 시작은 열 매핑을 초기화합니다.
- 두 번째 다시 시작에서는 스키마 변경 내용을 적용할 수 있습니다.
추가 스키마 변경(예: 열 추가 또는 삭제 또는 열 형식 변경)도 작업을 다시 시작해야 합니다.
이 옵션은 schemaTrackingLocation
다음 코드 예제와 같이 스키마 추적 경로를 지정하는 데 사용됩니다.
checkpoint_path = "/path/to/checkpointLocation"
(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)