파이프라인 코드 개발 및 테스트는 다른 Apache Spark 워크로드와 다릅니다. 이 문서에서는 파이프라인 코드를 개발할 때 지원되는 기능, 모범 사례 및 고려 사항에 대한 개요를 제공합니다. 더 많은 권장 사항 및 모범 사례는 Lakeflow 선언적 파이프라인에 소프트웨어 개발 및 DevOps 모범 사례 적용을 참조하세요.
메모
코드의 유효성을 검사하거나 업데이트를 실행하려면 파이프라인 구성에 소스 코드를 추가해야 합니다. Lakeflow 선언적 파이프라인 구성을 참조하세요.
파이프라인 소스 코드에 유효한 파일은 무엇인가요?
Lakeflow 선언적 파이프라인 코드는 Python 또는 SQL일 수 있습니다. 단일 파이프라인을 지원하는 Python 및 SQL 소스 코드 파일을 혼합해서 사용할 수 있지만 각 파일에는 하나의 언어만 포함될 수 있습니다. Python 사용하여 파이프라인 코드 개발 및 SQL 사용하여 파이프라인 코드 개발참조하세요.
파이프라인의 소스 코드를 지정할 때 Notebook 및 작업 영역 파일을 사용할 수 있습니다. 작업 영역 파일은 선호하는 IDE 또는 Databricks 파일 편집기에서 작성한 Python 또는 SQL 스크립트를 나타냅니다. 작업 영역 파일이란?.
Python 코드를 모듈 또는 라이브러리로 개발하는 경우 코드를 설치 및 가져온 다음 소스 코드로 구성된 Python Notebook 또는 작업 영역 파일에서 메서드를 호출해야 합니다. Lakeflow 선언적 파이프라인에 대한 Python 종속성 관리를 참조하세요.
메모
Python Notebook에서 임의의 SQL 명령을 사용해야 하는 경우 구문 패턴 spark.sql("<QUERY>")
사용하여 SQL을 Python 코드로 실행할 수 있습니다.
Unity 카탈로그 함수를 사용하면 SQL에서 사용할 임의의 Python 사용자 정의 함수를 등록할 수 있습니다. Unity 카탈로그 UDF(사용자 정의 함수)참조하세요.
Lakeflow 선언적 파이프라인 개발 기능 개요
Lakeflow 선언적 파이프라인은 많은 Azure Databricks 기능을 확장하고 활용하며 새로운 기능과 개념을 소개합니다. 다음 표에서는 파이프라인 코드 개발을 지원하는 개념 및 기능에 대한 간략한 개요를 제공합니다.
특징 | 묘사 |
---|---|
개발 모드 | 새 파이프라인은 기본적으로 개발 모드에서 실행되도록 구성됩니다. Databricks는 대화형 개발 및 테스트에 개발 모드를 사용하는 것이 좋습니다. 개발 및 프로덕션 모드참조하세요. |
확인 |
Validate 업데이트는 테이블에서 업데이트를 실행하지 않고 파이프라인 소스 코드의 정확성을 확인합니다. 테이블이 업데이트될 때까지 기다리지 말고파이프라인에서 오류를 확인하세요. |
노트북 | Lakeflow 선언적 파이프라인의 소스 코드로 구성된 Notebook은 코드 유효성을 검사하고 업데이트를 실행하기 위한 대화형 옵션을 제공합니다. Lakeflow 선언적 파이프라인에서 Notebook을 사용하여 ETL 파이프라인 개발 및 디버그를 참조하세요. |
매개 변수 | 소스 코드 및 파이프라인 구성의 매개 변수를 활용하여 테스트 및 확장성을 간소화합니다. Lakeflow 선언적 파이프라인에서 매개 변수 사용을 참조하세요. |
Databricks 자산 번들 | Databricks 자산 번들을 사용하면 작업 영역 간에 파이프라인 구성 및 소스 코드를 이동할 수 있습니다. Databricks 자산 번들 프로젝트로 Lakeflow 선언적 파이프라인 변환을 참조하세요. |
개발 및 테스트를 위한 샘플 데이터 세트 만들기
Databricks는 예상 데이터 및 잠재적으로 형식이 잘못되었거나 손상된 레코드를 사용하여 파이프라인 논리를 테스트하기 위해 개발 및 테스트 데이터 세트를 만드는 것이 좋습니다. 다음을 포함하여 개발 및 테스트에 유용할 수 있는 데이터 세트를 만드는 방법에는 여러 가지가 있습니다.
- 프로덕션 데이터 세트에서 데이터의 하위 집합을 선택합니다.
- PII를 포함하는 원본에 대해 익명화되거나 인위적으로 생성된 데이터를 사용합니다.
- 다운스트림 변환 논리를 기반으로 잘 정의된 결과를 사용하여 테스트 데이터를 만듭니다.
- 데이터 스키마 기대치를 깨뜨리는 레코드를 만들어 잠재적인 데이터 손상, 형식이 잘못된 레코드 및 업스트림 데이터 변경을 예상합니다.
예를 들어 다음 코드를 사용하여 데이터 세트를 정의하는 Notebook이 있는 경우:
CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
"/production/data",
format => "json")
다음과 같은 쿼리를 사용하여 특정 레코드를 포함하는 샘플 데이터 세트를 만들 수 있습니다.
CREATE OR REFRESH MATERIALIZED VIEW input_data AS
SELECT "2021/09/04" AS date, 22.4 as sensor_reading UNION ALL
SELECT "2021/09/05" AS date, 21.5 as sensor_reading
다음 예제에서는 게시된 데이터를 필터링하여 개발 또는 테스트를 위한 프로덕션 데이터의 하위 집합을 만드는 방법을 보여 줍니다.
CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY
이러한 다양한 데이터 세트를 사용하려면 변환 논리를 구현하는 Notebook을 사용하여 여러 파이프라인을 만듭니다. 각 파이프라인은 input_data
데이터 세트에서 데이터를 읽을 수 있지만 환경과 관련된 데이터 세트를 만드는 Notebook을 포함하도록 구성됩니다.
Lakeflow 선언적 파이프라인 데이터 세트는 어떻게 데이터를 처리합니까?
다음 표는 머티리얼라이즈드 뷰, 스트리밍 테이블 및 일반 뷰가 데이터를 처리하는 방법에 대해 설명합니다.
데이터 세트 형식 | 정의된 쿼리를 통해 레코드를 처리하는 방법 |
---|---|
스트리밍 테이블 | 각 레코드는 정확히 한 번 처리됩니다. 이 경우 추가 전용 원본이 있다고 가정합니다. |
구체화된 뷰 | 레코드는 현재 데이터 상태에 대한 정확한 결과를 반환하는 데 필요한 대로 처리됩니다. 물리화된 뷰는 변환, 집계, 느린 쿼리의 사전 계산, 또는 자주 사용되는 계산과 같은 데이터 처리 작업에 사용해야 합니다. |
보기 | 레코드는 뷰를 쿼리할 때마다 처리됩니다. 중간 변환 및 공용 데이터 세트에 게시해서는 안 되는 데이터 품질 검사에 대한 뷰를 사용합니다. |
Lakeflow 선언적 파이프라인에서 첫 번째 데이터 세트를 선언하기
Lakeflow 선언적 파이프라인에는 Python 및 SQL에 대한 새로운 구문이 도입되었습니다. 파이프라인 구문의 기본 사항을 알아보려면 Python 사용하여 파이프라인 코드 개발 및 SQL 사용하여 파이프라인 코드 개발참조하세요.
메모
Lakeflow 선언적 파이프라인은 데이터 세트 정의를 업데이트 처리와 분리하며 Lakeflow 선언적 파이프라인 Notebook은 대화형 실행을 위한 것이 아닙니다.
Lakeflow 선언적 파이프라인을 구성하려면 어떻게 할까요?
Lakeflow 선언적 파이프라인에 대한 설정은 다음 두 가지 광범위한 범주로 구분됩니다.
- Notebook 또는 파일 컬렉션(소스 코드라고 함)을 정의하여 Lakeflow 선언적 파이프라인 구문을 사용하여 데이터 세트를 선언하는 구성입니다.
- 파이프라인 인프라, 종속성 관리, 업데이트 처리 방법 및 테이블이 작업 영역에 저장되는 방법을 제어하는 구성입니다.
대부분의 구성은 선택 사항이지만 일부는 특히 프로덕션 파이프라인을 구성할 때 주의해야 합니다. 여기에는 다음이 포함되었습니다.
- 파이프라인 외부에서 데이터를 사용할 수 있도록 하려면 Hive 메타스토어에 게시할 대상 스키마을 선언하거나, Unity 카탈로그에 게시할 대상 카탈로그 및 대상 스키마를 선언해야 합니다.
- 데이터 액세스 권한은 실행에 사용되는 클러스터를 통해 구성됩니다. 지정된 경우 클러스터에 데이터 원본 및 대상 스토리지 위치대해 구성된 적절한 권한이 있는지 확인합니다.
Python 및 SQL을 사용하여 파이프라인에 대한 소스 코드를 작성하는 방법에 대한 자세한 내용은 Lakeflow 선언적 파이프라인 SQL 언어 참조 및 Lakeflow 선언적 파이프라인 Python 언어 참조를 참조하세요.
파이프라인 설정 및 구성에 대한 자세한 내용은 Lakeflow 선언적 파이프라인 구성을 참조하세요.
첫 번째 파이프라인을 배포하고 업데이트를 실행하세요
Lakeflow 선언적 파이프라인을 사용하여 데이터를 처리하기 전에 파이프라인을 구성해야 합니다. 파이프라인이 구성되면 업데이트를 트리거하여 파이프라인의 각 데이터 세트에 대한 결과를 계산할 수 있습니다. Lakeflow 선언적 파이프라인 사용을 시작하려면 자습서: Lakeflow 선언적 파이프라인과 함께 변경 데이터 캡처를 사용하여 ETL 파이프라인 빌드를 참조하세요.
파이프라인 업데이트란?
파이프라인은 업데이트을 시작할 때 인프라를 배포하고 데이터 상태를 다시 계산합니다. 업데이트는 다음을 수행합니다.
- 올바른 구성으로 클러스터를 시작합니다.
- 정의된 모든 테이블 및 뷰를 검색하고 잘못된 열 이름, 누락된 종속성 및 구문 오류와 같은 분석 오류를 확인합니다.
- 사용 가능한 최신 데이터를 사용하여 테이블 및 뷰를 만들거나 업데이트합니다.
파이프라인은 사용 사례의 비용 및 대기 시간 요구 사항에 따라 지속적으로 또는 일정에 따라 실행할 수 있습니다. Lakeflow 선언적 파이프라인에서 업데이트 실행을 참조하세요.
Lakeflow 선언적 파이프라인을 사용하여 데이터 수집
Lakeflow 선언적 파이프라인은 Azure Databricks에서 사용할 수 있는 모든 데이터 원본을 지원합니다.
Databricks는 대부분의 수집 사용 사례에 스트리밍 테이블을 사용하는 것이 좋습니다. 클라우드 개체 스토리지에 도착하는 파일의 경우 Databricks는 자동 로더를 권장합니다. 대부분의 메시지 버스에서 Lakeflow 선언적 파이프라인을 사용하여 데이터를 직접 수집할 수 있습니다.
클라우드 스토리지에 대한 액세스 구성에 대한 자세한 내용은 클라우드 스토리지 구성을 참조하세요.
자동 로더에서 지원되지 않는 형식의 경우 Python 또는 SQL을 사용하여 Apache Spark에서 지원하는 모든 형식을 쿼리할 수 있습니다. Lakeflow 선언적 파이프라인을 사용하여 데이터 로드를 참조하세요.
데이터 품질 모니터링 및 적용
기대치를 사용하여 데이터 세트의 내용에 대한 데이터 품질 제어를 지정할 수 있습니다. 제약 조건에 실패한 레코드를 추가하지 못하게 하는 기존 데이터베이스의 CHECK
제약 조건과 달리 데이터 품질 요구 사항에 실패한 데이터를 처리할 때 기대는 유연성을 제공합니다. 이러한 유연성을 통해 지저분할 것으로 예상되는 데이터와 엄격한 품질 요구 사항을 충족해야 하는 데이터를 처리하고 저장할 수 있습니다.
파이프라인 기대를 사용하여 데이터 품질을 관리하기를 참조하세요.
Lakeflow 선언적 파이프라인 및 Delta Lake는 어떻게 관련되어 있나요?
Lakeflow 선언적 파이프라인은 Delta Lake의 기능을 확장합니다. Lakeflow 선언적 파이프라인에서 만들고 관리하는 테이블은 델타 테이블이므로 Delta Lake에서 제공하는 것과 동일한 보장 및 기능이 있습니다. Azure Databricks에서 Delta Lake란?을 참조하세요.
Lakeflow 선언적 파이프라인은 Delta Lake에서 설정할 수 있는 여러 테이블 속성 외에도 여러 테이블 속성을 추가합니다. Lakeflow 선언적 파이프라인 속성 참조 및 델타 테이블 속성 참조를 참조하세요.
Lakeflow 선언적 파이프라인에서 테이블을 만들고 관리하는 방법
Azure Databricks는 Lakeflow 선언적 파이프라인을 사용하여 만든 테이블을 자동으로 관리하여 테이블의 현재 상태를 올바르게 계산하기 위해 업데이트를 처리해야 하는 방법을 결정하고 다양한 유지 관리 및 최적화 작업을 수행합니다.
대부분의 작업의 경우 Lakeflow 선언적 파이프라인이 대상 테이블에 대한 모든 업데이트, 삽입 및 삭제를 처리하도록 허용해야 합니다. 자세한 내용 및 제한 사항은 수동 삭제 또는 업데이트 유지를 참조 하세요.
Lakeflow 선언적 파이프라인에서 수행하는 유지 관리 작업
Lakeflow 선언적 파이프라인은 예측 최적화를 사용하여 최적의 주기에 대한 유지 관리 작업을 수행합니다. 유지 관리는 이전 버전의 테이블을 제거하여 쿼리 성능을 향상시키고 비용을 절감할 수 있습니다. 여기에는 전체 OPTIMIZE 및 VACUUM 작업이 포함됩니다. 유지 관리 작업은 예측 최적화에 의해 결정된 일정에 따라 수행되며 이전 유지 관리 이후 파이프라인 업데이트가 실행된 경우에만 수행됩니다.
예측 최적화 실행 빈도를 이해하고 유지 관리 비용을 이해하려면 예측 최적화 시스템 테이블 참조를 참조하세요.
제한점
제한 사항 목록은 Lakeflow 선언적 파이프라인 제한 사항을 참조하세요.
Unity 카탈로그에서 Lakeflow 선언적 파이프라인을 사용하는 것과 관련된 요구 사항 및 제한 사항 목록은 Lakeflow 선언적 파이프라인에서 Unity 카탈로그 사용을 참조하세요.
추가 리소스
- Lakeflow 선언적 파이프라인은 Databricks REST API를 완전히 지원합니다. Lakeflow 선언적 파이프라인 API를 참조하세요.
- 파이프라인 및 테이블 설정은 Lakeflow 선언적 파이프라인 속성 참조를 참조하세요.
- Lakeflow 선언적 파이프라인 SQL 언어 참조입니다.
- Lakeflow 선언적 파이프라인 Python 언어 레퍼런스