본문 바로가기

Data Engineering/Database

[Databricks] Delta Live Table 이란?

델타 라이브 테이블 (Delta Live Table)

오늘은 데이터 파이프라인을 간편하게 실행 할 수 있는 델타 라이브 테이블을 설명하고자 한다.

DLT란 델타 라이브 테이블이라고 말하며, 스트리밍 및 배치 ETL 방식을 처리할 수 있도록 지원하며 데이터 브릭스에서 제공하는 기능으로, 데이터 파이프라인을 개발 할 수 있는 자동화 서비스이다.  DLT로 처리 시 작업 오케스트레이션, 클러스터 관리, 모니터링, 데이터 품질 및 오류 처리 등을 자동으로 처리할 수 있다.

데이터브릭스에서 델타 라이브 테이블을 사용하려면 dlt 라이브러리를 사용하면 되며, 시작하기 위해서는 델타 라이브 테이블의 파이프라인을 우선 생성해주어야 한다.

- 파이프라인 실행 모드는 trigger와 continuous로 구분된다.

> trigger는 한 번 실행되고 종료되는 것이라 배치방식으로 실행할 수 있고, continuous는 계속 실행되어 스트리밍 데이터를 처리하기 때문에 스트리밍 방식으로 실행할 수 있다. continuous로 할 시에는 컴퓨팅인 인스턴스가 계속 떠있기 때문에 비용측면이 연결될 수 있다.

> 블로그에 작성할 내용의 파이프라인 모드는 배치 방식에 사용되는 triggered 모드로 실행시켰다.

- 작업한 노트북을 소스코드의 path에 넣어준다.

- Storage location : 테이블 및 기타 메타데이터가 저장될 DBFS 또는 클라우드 스토리지의 경로이다.

- Target Schema : 메타스토어에 등록할 데이터 베이스이다.

- storage location을 공란으로 하게되면, dbfs의 위치가 자동으로 선택한다.

파이프라인을 만든 후, 노트북 작업에선 dlt 라이브러리를 import해준다.

import dlt
from pyspark.sql.functions import *
@dlt.table
def table_read():
    return spark.sql('select * from temp_table')

- temp_table이라는 델타 테이블에서 데이터를 읽어와 DLT에서 관리되는 새로운 테이블을 생성하는 것으로 이해하면된다.

@dlt.table
def live_to_table():
    return spark.sql('''select * from live.table_read''')

- DLT 테이블화 되어있는 테이블에서 데이터를 읽는것으로 함수화 시켜 놓은 후,

@dlt.table
def table_select_diameter():
    df = dlt.read('live_to_table')
    diameter_df = df.select('diameter')
    return diameter_df

 

@dlt.table
def table_select_length():
    df = dlt.read('live_to_table')
    length_df = df.select('length')
    return length_df

 

테이블에 있는 각각의 컬럼인 diameter, length의 컬럼을 선택해서 가져온다.

@dlt.table
def length_to_cast():
    df = dlt.read('table_select_length')
    length_df_string = df.select('length').cast('string').alias('length')
    return length_df_string

그 후 length를 읽은 테이블을 casting하는 코드를 임시로 작성한 후 파이프라인을 실행하면 자동으로 dag를 생성해준다.

오른쪽의 작은 dag를 보면 알 수 있듯이 선택한 dag에 따라 어디를 선택하고 있는지 알 수 있다.

 

또한 Data quality를 모니터링 할 수 있고 flows를 보면 언제 시작했고 얼마나 시간이 걸렸는지를 알 수 있다.

이처럼 데이터 품질 검사 및 모니터링 또한 지원되는 자동화 서비스이다.

 

Spark에서 지원하는 구조 스트리밍 파이프라인도 좋으나 DLT가 구조스트리밍 파이프라인보다 더 자동화가 되어있는 서비스를 위의 표에서도 볼 수 있다. ci/cd 및 버전관리 또는 컴퓨팅에 대한 오토스케일링도 자동화를 할 수 있다.

 

https://www.databricks.com/kr/product/delta-live-tables

 

Delta Live 테이블 | Databricks

데이터브릭스 인텔리전스 플랫폼에서 Delta Live Tables(DLT) 파이프라인을 사용하여 ETL을 간소화하세요. 신뢰할 수 있는 데이터 파이프라인을 간편하게 실행하세요.

www.databricks.com


제약사항

단, 노트북에서 @dlt를 실행할 수는 없다.

> DLT는 특정한 방식으로 실행되어야 하며 Databricks 노트북 셀에서 @dlt.table을 실행하면 DLT의 실행하는 환경이 설정되지 않기 때문에 오류가 발생한다. 따라서 노트북을 설정한 뒤 파이프라인에서 실행해야 한다.

 

※ 또한, 노트북을 여러 개 붙일 수 있으나,(소스 코드 노트북 여러개가 가능) 노트북에서 노트북을 호출하는 기능을 사용할 수 없다.

 

※ 또한, 파이썬과 sql을 혼합해서 사용하는 매직키워드를 사용할 수 없다. 일관된 방식으로 Python 또는 SQL을 사용하여 데이터 파이프라인을 정의하는 것을 요구한다. 매직 키워드는 노트북 셀의 맥락에서 작동하지만, DLT 파이프라인은 전체 파이프라인 컨텍스트에서 작동하기 때문에 작동되지 않는다.

반응형