Delta Live Tables 설정

Delta Live Tables 설정은 파이프라인을 구현하는 1개 이상의 Notebook과 환경에서 파이프라인을 실행하는 방법(예: 개발, 스테이징 또는 프로덕션)을 지정하는 매개 변수를 지정합니다. Delta Live Tables 설정은 JSON으로 표현되며 Delta Live Tables UI에서 수정할 수 있습니다.

설정

필드
id

형식: string

이 파이프라인의 GUID(Globally Unique Identifier)입니다. 식별자는 시스템에서 할당하며 변경할 수 없습니다.
name

형식: string

이 파이프라인에 대한 사용자 식별 이름입니다. 이 이름은 UI에서 파이프라인 작업을 식별하는 데 사용할 수 있습니다.
storage

형식: string

파이프라인 실행에 필요한 출력 데이터 및 메타데이터가 저장되는 DBFS 또는 클라우드 저장소의 위치입니다. 테이블 및 메타데이터는 이 위치의 하위 디렉터리에 저장됩니다.

storage 설정을 지정하지 않으면 시스템의 기본 위치는 dbfs:/pipelines/로 지정됩니다.

파이프라인을 만든 후에는 storage 설정을 변경할 수 없습니다.
구성

형식: object

파이프라인을 실행할 클러스터의 Spark 구성에 추가할 설정의 선택적 목록입니다. 이러한 설정은 Delta Live Tables 런타임에서 읽고 Spark 구성을 통해 파이프라인 쿼리에 사용할 수 있습니다.

요소는 key:value 쌍으로 형식을 지정해야 합니다.

configuration 개체를 사용하는 예제에 대해서는 파이프라인 매개 변수화를 참조하세요.

델타 라이브 테이블 파이프라인에 대해 향상된 자동 크기 조정을 사용하도록 설정하는 configuration 개체를 사용하는 예제는Databricks 고급 자동 크기 조정을 참조하세요.
라이브러리

형식: array of objects

파이프라인 코드 및 필수 아티팩트가 포함된 Notebook 배열입니다. 예제를 보려면 파이프라인에 여러 Notebook 구성을 참조하세요.
클러스터

형식: array of objects

파이프라인을 실행할 클러스터의 사양 배열입니다. 자세한 내용은 클러스터 구성을 참조하세요.

지정하지 않으면 파이프라인이 파이프라인에 대한 기본 클러스터 구성을 자동으로 선택합니다.
연속

형식: boolean

파이프라인을 계속 실행할지 여부를 나타내는 플래그입니다.

기본값은 false입니다.
대상

형식: string

파이프라인 출력 데이터를 유지하기 위한 데이터베이스의 이름입니다. target 설정을 구성하면 Azure Databricks UI에서 파이프라인 출력 데이터를 보고 쿼리할 수 있습니다.
채널

형식: string

사용할 Delta Live Tables 런타임의 버전입니다. 지원되는 값은

* preview: 예정된 기능으로 파이프라인을 테스트합니다.
* current: 최신 Delta Live Tables 런타임을 사용합니다.

channel 필드는 선택 사항입니다. 기본값
current. Databricks에서는 프로덕션 워크로드에 현재 런타임 버전의 사용을 권장합니다.
버전

string 입력

파이프라인을 실행할 Delta Live Tables 제품 버전입니다. 이 설정을 사용하면 파이프라인의 요구 사항에 따라 최상의 제품 버전을 선택할 수 있습니다.

* core: 스트리밍 수집 워크로드를 실행합니다.
* pro: 스트리밍 수집을 실행하고 CDC(변경 데이터 캡처) 워크로드를 실행합니다.
* advanced: 데이터 품질 제약 조건을 적용하기 위해 Delta Live Tables 기대치가 필요한 스트리밍 수집 워크로드, CDC 워크로드 및 워크로드를 실행합니다.

edition 필드는 선택 사항입니다. 기본값
advanced.
photon

형식: boolean

Photon을 사용하여 파이프라인을 실행할지 여부를 나타내는 플래그입니다. Photon은 Azure Databricks 고성능 Spark 엔진입니다. Photon 사용 파이프라인은 Photon이 아닌 파이프라인과 다른 비율로 청구됩니다.

photon 필드는 선택 사항입니다. 기본값은 false입니다.

클러스터 구성

클러스터 만들기 API와 동일한 JSON 형식으로 관리되는 파이프라인에서 사용하는 클러스터를 구성할 수 있습니다. 모든 처리가 수행되는 기본 클러스터와 매일 유지 관리 작업이 실행되는 유지 관리 클러스터의 두 가지 클러스터 유형에 대한 구성을 지정할 수 있습니다. 각 클러스터는 label 필드를 사용하여 식별됩니다.

클러스터 속성을 지정하는 것은 선택 사항이며 시스템은 누락된 값에 대해 기본값을 사용합니다.

참고

클러스터 구성에서는 Spark 버전을 설정할 수 없습니다. Delta Live Tables 클러스터는 최신 기능을 포함하도록 지속적으로 업데이트되는 Databricks Runtime의 사용자 지정 버전에서 실행됩니다.

Delta Live Tables 클러스터는 사용하지 않을 때 자동으로 종료되므로 클러스터 구성에서 autotermination_minutes를 설정하는 클러스터 정책을 참조하면 오류가 발생합니다. 클러스터 종료 동작을 제어하려면 개발 또는 프로덕션 모드를 사용하거나 pipelines.clusterShutdown.delay Spark 구성을 사용할 수 있습니다. 다음 예제에서는 pipelines.clusterShutdown.delay 값을 5초로 설정합니다.

{
  "clusters": [
    {
      "label": "default",
      "spark_conf": {
        "pipelines.clusterShutdown.delay": "5s"
      }
    }
  ]
}

참고

스토리지 위치에 액세스하는 데 Azure Data Lake Storage 자격 증명 통과 또는 기타 구성이 필요한 경우 기본 클러스터와 유지 관리 클러스터 모두에 대해 이를 지정합니다.

기본 클러스터 및 유지 관리 클러스터의 예제 구성:

{
  "clusters": [
    {
      "label": "default",
      "node_type_id": "Standard_D3_v2",
      "driver_node_type_id": "Standard_D3_v2",
      "num_workers": 20,
      "spark_conf": {
        "spark.databricks.io.parquet.nativeReader.enabled": "false"
      }
    },
    {
      "label": "maintenance"
    }
  ]
}

클러스터 정책

참고

클러스터 정책을 사용하여 Delta Live Tables 클러스터를 구성하는 경우 단일 정책을 defaultmaintenance 클러스터 모두에 적용하는 것이 좋습니다.

파이프라인 클러스터에 대한 클러스터 정책을 구성하려면 dlt로 설정된 cluster_type필드를 사용하여 정책을 만듭니다.

{
  "cluster_type": {
    "type": "fixed",
    "value": "dlt"
  }
}

파이프라인 설정에서 클러스터 policy_id 필드를 정책 식별자의 값으로 설정합니다. 다음 예제에서는 C65B864F02000008 식별자와 함께 클러스터 정책을 사용하여 defaultmaintenance 클러스터를 구성합니다.

{
  "clusters": [
    {
      "label": "default",
      "policy_id": "C65B864F02000008",
      "autoscale": {
        "min_workers": 1,
        "max_workers": 5
      }
    },
    {
      "label": "maintenance",
      "policy_id": "C65B864F02000008"
    }
  ]
}

예제

파이프라인 및 클러스터 구성

다음 예제에서는 스토리지에 DBFS를 사용하고 작은 1노드 클러스터에서 실행되는 example-notebook_1에 구현된 트리거된 파이프라인을 구성합니다.

{
  "name": "Example pipeline 1",
  "storage": "dbfs:/pipeline-examples/storage-location/example1",
  "clusters": [
    {
      "num_workers": 1,
      "spark_conf": {}
    }
  ],
  "libraries": [
    {
      "notebook": {
         "path": "/Users/user@databricks.com/example_notebook_1"
      }
    }
  ],
  "continuous": false
}

파이프라인에 여러 Notebook 구성

libraries 필드를 사용하여 여러 Notebook이 있는 파이프라인을 구성합니다. Delta Live Tables는 데이터 세트 종속성을 자동으로 분석하여 파이프라인에 대한 처리 그래프를 생성하므로 Notebook을 어떤 순서로든 추가할 수 있습니다. 다음 예제에서는 example-notebook_1example-notebook_2에 정의된 데이터 세트를 포함하는 파이프라인을 만듭니다.

{
  "name": "Example pipeline 3",
  "storage": "dbfs:/pipeline-examples/storage-location/example3",
  "libraries": [
    { "notebook": { "path": "/example-notebook_1" } },
    { "notebook": { "path": "/example-notebook_2" } }
  ]
}

Delta Live Tables를 사용하여 개발 워크플로 만들기

개발, 스테이징 및 프로덕션을 위한 별도의 Delta Live Tables 파이프라인을 만들 수 있으므로 생성하는 데이터의 소비자에게 영향을 주지 않고 변환 논리를 테스트하고 디버그할 수 있습니다. 다른 데이터베이스를 대상으로 하지만 동일한 기본 코드를 사용하는 별도의 파이프라인을 만들기만 하면 됩니다.

이 기능을 Databricks Repos와 결합하여 완전히 격리된 개발 환경과 개발에서 프로덕션으로 푸시하는 간단한 워크플로를 만들 수 있습니다.

{
  "name": "Data Ingest - DEV user@databricks",
  "target": "customers_dev_user",
  "libraries": ["/Repos/user@databricks.com/ingestion/etl.py"],
}
{
  "name": "Data Ingest - PROD",
  "target": "customers",
  "libraries": ["/Repos/production/ingestion/etl.py"],
}

파이프라인 매개 변수화

데이터 세트를 정의하는 Python 및 SQL 코드는 파이프라인의 설정에 의해 매개 변수화될 수 있습니다. 매개 변수화를 사용하면 다음과 같은 사용 사례를 사용할 수 있습니다.

  • 코드에서 긴 경로 및 기타 변수를 분리합니다.
  • 개발 또는 스테이징 환경에서 처리되는 데이터의 양을 줄여 테스트 속도를 높입니다.
  • 동일한 변환 논리를 다시 사용하여 여러 데이터 원본에서 처리합니다.

다음 예제에서는 startDate 구성 값을 사용하여 개발 파이프라인을 입력 데이터의 하위 집합으로 제한합니다.

CREATE OR REFRESH LIVE TABLE customer_events
AS SELECT * FROM sourceTable WHERE date > ${mypipeline.startDate};
@dlt.table
def customer_events():
  start_date = spark.conf.get("mypipeline.startDate")
  return read("sourceTable").where(col("date") > start_date)
{
  "name": "Data Ingest - DEV",
  "configuration": {
    "mypipeline.startDate": "2021-01-02"
  }
}
{
  "name": "Data Ingest - PROD",
  "configuration": {
    "mypipeline.startDate": "2010-01-02"
  }
}