다음을 통해 공유


델타 테이블 삭제 또는 바꾸기

Azure Databricks는 Unity 카탈로그 또는 Hive 메타스토어에 등록된 테이블을 삭제하고 바꾸기 위한 SQL 표준 DDL 명령을 지원합니다. 이 문서에서는 구성된 환경 및 원하는 결과에 따라 델타 테이블을 삭제하고 바꾸는 예제와 구문에 대한 권장 사항을 제공합니다.

테이블을 삭제하는 경우

테이블을 영구적으로 삭제하고 동일한 위치에 새 테이블을 만들 의도가 없는 경우 metastore에서 테이블을 제거하는 데 사용해야 DROP TABLE 합니다. 예시:

DROP TABLE table_name

DROP TABLE 에는 테이블 형식과 테이블이 Unity 카탈로그에 등록되어 있는지 또는 레거시 Hive 메타스토어에 등록되었는지에 따라 의미 체계가 다릅니다.

테이블 유형 메타 저장소 동작
관리형 Unity 카탈로그 테이블이 메타스토어에서 제거되고 기본 데이터가 삭제될 것으로 표시됩니다. Unity 카탈로그 관리 테이블에서 7일 동안 데이터를 사용할 수 있습니다 UNDROP .
관리형 Hive 테이블이 메타스토어에서 제거되고 기본 데이터가 삭제됩니다.
외부 Unity 카탈로그 테이블은 메타스토어에서 제거되지만 기본 데이터는 그대로 유지됩니다. 이제 URI 액세스 권한은 데이터를 포함하는 외부 위치에 의해 제어됩니다.
외부 Hive 테이블은 메타스토어에서 제거되지만 기본 데이터는 그대로 유지됩니다. 모든 URI 액세스 권한은 변경되지 않습니다.

DROP TABLE 의미 체계는 테이블 형식마다 다르며 Unity 카탈로그는 내부 테이블 ID를 사용하여 델타 테이블의 기록을 유지 관리합니다. 그러나 모든 테이블은 작업이 완료된 후 이전에 등록된 테이블 이름에 메타스토어의 데이터 및 테이블 기록에 대한 활성 링크가 더 이상 없다는 공통 결과를 공유합니다.

DROP TABLE을 참조하세요.

참고 항목

Databricks는 프로덕션 파이프라인 또는 시스템에 대해 동일한 이름을 사용하여 테이블을 삭제한 다음 다시 만드는 패턴을 권장하지 않습니다. 이 패턴은 동시 작업에 예기치 않은 결과를 초래할 수 있기 때문에 권장되지 않습니다. 동시 작업으로 데이터 바꾸기를 참조 하세요.

테이블을 교체하는 경우

Databricks는 대상 테이블을 새 데이터로 완전히 덮어쓰려는 사용 사례에 문을 사용하는 CREATE OR REPLACE TABLE 것이 좋습니다. 예를 들어 Parquet 디렉터리의 모든 데이터로 델타 테이블을 덮어쓰려면 다음 명령을 실행할 수 있습니다.

CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`

CREATE OR REPLACE TABLE 에는 사용 중인 테이블 형식 또는 메타스토어와 관계없이 동일한 의미 체계가 있습니다. 다음은 다음과 같은 중요한 이점입니다 CREATE OR REPLACE TABLE.

  • 테이블 내용이 대체되지만 테이블 ID는 유지 관리됩니다.
  • 테이블 기록은 유지되며 명령을 사용하여 테이블을 이전 버전으로 RESTORE 되돌릴 수 있습니다.
  • 작업은 단일 트랜잭션이므로 테이블이 존재하지 않는 시간이 없습니다.
  • 테이블에서 읽는 동시 쿼리는 중단 없이 계속할 수 있습니다. 대체 전후 버전이 테이블 기록에 계속 존재하기 때문에 동시 쿼리는 필요에 따라 테이블의 두 버전 중 하나를 참조할 수 있습니다.

CREATE TABLE [USING]을 참조하세요.

데이터를 동시 작업으로 바꾸기

동시 작업에 사용될 수 있는 테이블의 데이터를 완전히 대체하려면 을 사용해야 CREATE OR REPLACE TABLE합니다.

다음 안티패턴을 사용하면 안 됩니다.

-- This is an anti-pattern. Avoid doing this!
DROP TABLE IF EXISTS table_name;

CREATE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`;

이 권장 사항의 이유는 관리 테이블 또는 외부 테이블을 사용하는지 여부 및 Unity 카탈로그를 사용하는지에 따라 다르지만 이 패턴을 사용하는 모든 델타 테이블 형식에서 오류, 레코드 삭제 또는 손상된 결과가 발생할 수 있습니다.

대신 Databricks는 다음 예제와 같이 항상 사용하는 CREATE OR REPLACE TABLE것이 좋습니다.

CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`

원자성 데이터 교체 중에 테이블 기록이 유지되므로 동시 트랜잭션은 참조되는 원본 테이블의 버전에 대한 유효성을 검사할 수 있으므로 예기치 않은 동작이나 결과를 발생하지 않고 필요에 따라 동시 트랜잭션을 실패하거나 조정할 수 있습니다.