(Azure) Databricks Study를 해가면서 확인 한 부분에 대해 기술하고자 한다.
처음 발견은 사내 프로젝트를 진행하며, 외부(AWS S3)에 있는 데이터를 Azure Data Bricks로 옮기는 시나리오를
구성하여 진행하였고, 기존 만든 테이블에 데이터를 DELETE하고자 자연스럽게 DELETE 구문을 날렸으나...

Error 발생... 모지 하며 내용을 보니 해당 테이블은 delete를 지원하지 않는다. 이에 대한 부분을 체크 하다보니
Databricks에서는 델타(관리)테이블, 외부테이블(관리되지않는 테이블) 이란 체계로 구성되며, 위에서 만든 테이블
같은 경우는 외부테이블 이어서 Delete를 할 수 없다는 오류였다. 이를 알기위해서는 먼저 두가지 테이블이 어떤 개념인지
알아본다.

  • 델타(관리)테이블 (Delta Table)

- 일단 Delta Lake, Delta Lake Table, Delta Table, 관리테이블등 아마도 동일한 내용을 말하고 있지만 혼재되어 사용
되고 있는듯 하지만 내가 내린 결론은 일반적인 DB기준으로 생각하자면 -> 테이블(TABLE) 이다.
좀 더 자세히 알고자 한다면 다른 참고 사이트를 상세히 확인해 보길 바란다.

  #참조 : Delta Lake란? - Azure Databricks | Microsoft Learn

  • 외부테이블 (관리되지않는 테이블)

- MS Docs에서는 외부 테이블은 LOCATION 절을 사용하여 외부 스토리지 경로를 참조하는 테이블입니다. 라고,
표기하고 있다. 말 그대로 테이블이지만 그 안에 데이터는 외부와 연결된다는 소리다.
연결했던 소스가 변경/삭제시 영향을 받습니다.
USING data_source
테이블에 사용할 파일 형식입니다. data_source는 다음 중 하나여야 합니다.

  • TEXT
  • AVRO
  • CSV
  • JSON
  • PARQUET
  • ORC
  • DELTA

USING을 생략하면 기본값은 DELTA입니다.
※ DELTA로 하지 않는 그외 모든 테이블은 외부테이블 입니다.

#참조 : CREATE TABLE [USING] (Databricks SQL) - Azure Databricks - Databricks SQL | Microsoft Learn

#참조 : 외부 테이블(Databricks SQL) - Azure Databricks - Databricks SQL | Microsoft Learn

> 정리 하자면 데이터 자체를 DataBricks에서 관리하는 테이블. DataBricks에서는 테이블만 관리하고 데이터는 외부에 존재하는 테이블로 나눌 수 있을것 같다.
그럼 두가지는 어떻게 구별하지???

위 그림에서 보면 테이블명을 보고는 델타테이블? 외부테이블? 이 구분이 안된다.
확인하는 방법은 해당 테이블을 클릭하여, 조회되는 내용에 따라 확인 할 수 있다. 좀 더 테이블 리스트에 표기가 있었으면,
좋을텐데, 내가 모르는 걸 수도 있지만 일단 확인된 방법은 아래와 같다.
[ 외부테이블 (EXTERNAL TABLE) ]



[ 델타테이블 ] - Details, History정보 표기됨

<중요> 추가로 확인된 내용중 델타(관리)테이블 이지만 외부테이블 인건이 존재한다!!!

  • 델타테이블(관리되는 테이블 (MANAGED))

: 원천 데이터가 담기는 테이블이라고 보면된다.

  • 델타테이블(관리되지 않는 테이블 (EXTERNAL))

: 외부테이블과 비슷한 개념이다. 실제 데이터의 원천은 별도의 관리되는 테이블 과 연결되어 있는
개념이다. 실제 원천(MANAGED) 테이블의 정보가 변경되면 영향을 받는다.
★ 단 외부테이블(EXTERNAL TABLE) 과 차이점은.... 외부테이블은 실제로 특정한 외부경로를
바라보고 있기에 DELETE, INSERT등의 명령 자체가 불가하다.
그런데 델타테이블(EXTERNAL)의 경우는 연결 되어 있는곳이 동일 선상의 원천 델타테이블(MANAGED)
이기에 DELTET, INSERT등의 처리가 가능하다.
이 경우! 실제 원천데이터를 변경하는거 이기에 조심히 사용할 필요가 있을꺼로 판단된다.

[ MANAGED, EXTRNAL 델타 테이블 확인하기 ]
#확인 SQL : DESCRIBE EXTENDED <테이블명>

델타테이블(관리되는 테이블)

 

델타테이블(관리되지 않는 테이블)


[ 개념 요약정리! ]
DATABRICKS에서 테이블이란 크게 세가지로 구성된다.

  • 외부테이블 (EXTERNAL TABLE)
  • 관리되는(MANAGED) 델타테이블
  • 관리되지않는 외부(EXTERNAL) 델타테이블

+ Recent posts