Spark SQL 데이터 계보: Spark 파이프라인용 열 계보

Spark SQL 데이터 계보 Spark SQL 코드에서 데이터가 어떻게 이동하는지에 대한 열 수준 맵입니다. 즉, Spark SQL 코드가 작성하는 모든 테이블에 어떤 소스 열이 사용되는지를 보여줍니다. CREATE TABLE ... AS SELECT 또는 삽입 덮어쓰기그리고 그 과정에서 임시 뷰, 조인, 함수 및 필터가 사용됩니다. Gudu SQLFlow 이 도구는 전용 Spark 다이얼렉트 파서를 사용하여 Spark SQL을 정적으로 파싱함으로써 해당 맵을 생성합니다. 클러스터 계측이나 리스너 연결, 작업 실행이 필요하지 않습니다. SQL을 붙여넣기만 하면 계보 다이어그램을 얻을 수 있습니다.

지금 바로 시도해 보세요: Spark SQL 스크립트를 여기에 붙여넣으세요. 무료 온라인 SQL 계보 시각화 도구Spark 다이얼렉트를 선택하고 모든 열을 업스트림 또는 다운스트림으로 추적할 수 있습니다. 클라우드 에디션은 무료 티어를 제공합니다.

런타임 리스너와 정적 파싱: Spark 계보를 얻는 두 가지 방법

Spark 환경에서 계보를 다루는 데에는 근본적으로 다른 두 가지 접근 방식이 있으며, 대부분의 팀은 결국 두 가지 모두를 필요로 합니다.

런타임 계보 OpenLineage와 Spark 통합에서 사용하는 접근 방식은 Spark 세션에 리스너를 연결하고 각 작업이 실행될 때마다 계보 이벤트를 발생시키는 것입니다. 이 방식은 실행된 내용, 실행 시점, 사용된 데이터셋 등을 정적 분석으로는 알 수 없는 실행 수준 메타데이터와 함께 기록하는 데 매우 효과적입니다. "어젯밤 파이프라인이 실제로 어떤 작업을 처리했는가?"라는 질문에 대한 답을 런타임 계보에서 찾을 수 있습니다.

정적 계보 SQLFlow의 접근 방식은 컴파일러처럼 SQL 텍스트 자체를 구문 분석하고 코드에서 계보를 도출합니다. 이는 런타임 캡처 구조로는 불가능한 모든 것을 포괄합니다.

  • 아직 실행하지 않은 SQL 문입니다. 풀 리퀘스트의 새로운 파이프라인, 다른 팀에서 인수한 스크립트, 분기별로 예약된 작업 백로그 등은 실행되기 전까지, 심지어 프로덕션 데이터를 대상으로 실행될 때까지 런타임 이벤트를 발생시키지 않습니다.
  • 코드 검토. 검토자는 배포 후에 영향을 파악하는 대신, 변경 사항을 승인하기 전에 전체 열 수준 종속성 그래프를 확인할 수 있습니다.
  • 마이그레이션 감사. 일반적으로 Hive에서 Spark로 워크로드를 마이그레이션할 때 필요한 것은 종속성 그래프입니다. 전체 월말에만 실행되는 작업을 포함한 코드베이스 전체를 정적 파싱으로 한 번에 읽어들입니다.
런타임 리스너(OpenLineage)정적 구문 분석(SQLFlow)
혈통 포착됨작업 실행 시마다SQL 텍스트에서, 어떤 것도 실행되기 전에
필수 사항Spark 세션에 리스너가 구성되었습니다. 작업은 실행되어야 합니다.SQL 파일과 선택적 스키마 메타데이터
실행되지 않은 코드를 포함합니다.아니요, 달리기도 없고, 행사도 없습니다.네, PR, 백로그, 드물게 실행되는 작업 등이 포함됩니다.
실행 메타데이터(시간, 버전)아니요, 코드 레벨에서만 가능합니다.
일반적인 사용운영 중인 파이프라인의 운영 관찰 가능성영향 분석, 코드 검토, 마이그레이션 감사, 규정 준수 문서화

이 둘은 서로 경쟁하는 관계가 아니라 상호 보완적입니다. 런타임 계보는 발생한 상황을 알려주고, 정적 계보는 코드가 수행하는 작업을 알려줍니다. SQLFlow의 DataHub, Microsoft Purview 및 OpenMetadata용 내보내기 어댑터를 사용하면 정적으로 파생된 계보를 런타임 이벤트가 저장되는 동일한 카탈로그에 저장할 수 있으므로 두 가지 보기를 나란히 볼 수 있습니다.

예시: 임시 뷰 체인을 CTAS로 변환

Spark SQL에서 단순한 로직 계보 도구를 무력화시키는 패턴은 임시 뷰 체인입니다. 노트북과 작업은 일반적으로 로직을 이러한 임시 뷰 체인을 통해 단계별로 실행합니다. 임시 보기 생성 또는 교체 결승전 직전 단계 CREATE TABLE ... AS SELECT다음은 간결하지만 현실적인 예입니다.

CREATE OR REPLACE TEMP VIEW clean_events AS SELECT CAST(event_time AS TIMESTAMP) AS event_ts, user_id, lower(event_name) AS event_name, amount FROM raw.events WHERE event_date >= date_sub(current_date(), 30); CREATE OR REPLACE TEMP VIEW user_daily AS SELECT user_id, to_date(event_ts) AS event_day, SUM(amount) AS daily_spend FROM clean_events WHERE event_name = 'purchase' GROUP BY user_id, to_date(event_ts); CREATE TABLE analytics.user_spend_30d USING PARQUET AS SELECT u.user_id, u.segment, d.event_day, d.daily_spend FROM user_daily d JOIN dim.users u ON u.user_id = d.user_id;

"어디에 있나요?"라고 물어보세요 분석.사용자_지출_30일.일일_지출 "어디에서 온 것인가?"라는 질문에 대한 솔직한 답변을 위해서는 두 가지 관점을 해결해야 합니다. 일일 지출 ~이다 SUM(clean_events.amount), 그리고 clean_events.amount ~이다 raw.events.amountSQLFlow는 바로 그러한 해결 과정을 수행하고 전체 과정을 렌더링합니다. raw.events.amount ~을 통해 clean_events 그리고 사용자_일일 결승 테이블에 진출한 선수들은 다음과 같습니다. 합집합 집계는 해당 현상이 발생하는 에지에 연결됩니다.

또한 대부분의 도구가 완전히 놓치는 부분까지 포착합니다. 간접 혈통열들 이벤트 날짜, 이벤트 이름그리고 조인 키 사용자 ID 절대 나타나지 않음 일일 지출하지만 이 세 가지 모두 그 가치를 형성합니다. 30일 필터를 변경하거나 '구입' 술어에 따라 출력의 모든 숫자가 변경됩니다. SQLFlow는 이러한 변화를 별도의 전환 가능한 관계 유형으로 모델링하므로 순수한 데이터 흐름 또는 전체 영향 영역을 볼 수 있습니다. 스키마 변경 검토에서는 영향 영역 보기가 실제로 필요한 보기입니다.

Spark SQL 구성 SQLFlow 해결

SQLFlow는 Spark SQL 방언 파서를 제공합니다. 이는 일반적인 ANSI 문법에 Spark 키워드를 추가한 것이 아니라, 39개의 방언별 파서 중 하나입니다. 특히 Spark SQL에서는 계보를 포함하는 문장을 처리합니다.

  • CREATE TABLE ... AS SELECT (CTAS) — Spark 배치 파이프라인의 핵심 구성 요소이며, 모든 출력 열은 전체 SELECT 문을 통해 출처를 추적할 수 있습니다.
  • 삽입 대상 그리고 삽입 덮어쓰기 — 여기에는 SELECT 목록과 대상 테이블 스키마 간의 위치 열 매핑이 포함됩니다.
  • 임시 보기 생성 또는 교체 — 임시 뷰는 해결되고 연결되므로 계보는 스테이징 레이어에서 멈추지 않고 스테이징 레이어를 통해 흐릅니다.
  • CTE, 서브쿼리 및 선택하다 * — 열 참조는 일반 테이블 표현식과 중첩된 하위 쿼리를 통해 해결되며, 스키마 메타데이터를 사용할 수 있는 경우 별표 표현식은 실제 열로 확장됩니다.
  • 함수, 형변환 및 집합 연산자 각 출력 열의 계보에는 해당 열이 거친 변환 과정이 기록되어 있습니다. 일일 지출 단순히 "금액에서"가 아니라 "에서"입니다. ~을 통해 합집합“.

Under the hood this is the General SQL Parser engine — a commercial SQL compiler front-end developed since the mid-2000s and validated against roughly 13,600 per-dialect test fixtures. Lineage quality is a parsing problem before it is anything else, and that corpus is what keeps edge-case Spark syntax from silently producing wrong edges.

Spark SQL 데이터 계보 기능이 스택에서 어떤 역할을 할까요?

Spark는 거의 단독으로 존재하지 않습니다. Spark 테이블은 일반적으로 Hive 메타스토어에 있으며, 점점 더 많은 Spark 워크로드가 Databricks에서 실행됩니다. SQLFlow는 이러한 테이블들을 각각 별도로 파싱되는 일급 객체로 취급합니다.

  • Hive 작업을 Spark로 마이그레이션하시나요? 기존 HQL을 분석해 보세요. Hive 데이터 계보 분석기 Spark 파서를 사용하여 다시 작성된 작업과 두 종속성 그래프를 비교하여 변환 과정에서 누락된 부분이 없는지 확인합니다.
  • Databricks에서 실행 중이신가요? Databricks 데이터 계보 파서 이 문서에서는 Databricks SQL 방언을 다루는데, 이는 단일 공유 문법으로는 처리할 수 없는 방식으로 오픈 소스 Spark SQL과 차이가 있습니다.
  • 혼합 환경인가요? SQLFlow는 지원되는 39개 방언을 모두 하나의 계보 저장소로 분석하므로, Spark 작업이 Snowflake 작업에서 생성된 테이블을 읽을 때 하나의 연속적인 그래프로 표시됩니다. 자세한 내용은 다음을 참조하세요. SQL 데이터 계보 도구 개요 전체적인 상황을 파악하기 위해서입니다.

입력 방식은 유연합니다. SQL 붙여넣기, 파일 업로드, JDBC를 통한 메타데이터 가져오기, Spark 기반 dbt 프로젝트용 dbt 매니페스트 가져오기 등 다양한 방식으로 입력할 수 있습니다. 출력은 드릴다운 가능한 대화형 다이어그램과 JSON, CSV, PNG 파일 내보내기, 그리고 자동화를 위한 REST API를 제공합니다. 예를 들어, CI 단계에서 풀 리퀘스트의 SQL 변경 사항을 분석할 수 있습니다.

배포 및 확장

SQLFlow Cloud는 대화형 사용을 위한 무료 티어를 제공하며, 프리미엄 티어는 월 $49.99달러입니다. SQL 서버에 네트워크를 통해 접근할 수 없는 팀은 이 서비스를 이용할 수 있습니다. 온프레미스 SQLFlow Docker 또는 Kubernetes 환경에서 사용 가능하며, 에어갭(air-gap) 환경에도 적합합니다. 월 $500 또는 선택한 데이터베이스 유형당 $4,800의 일회성 요금이 부과됩니다. SQLFlow는 SQL 코드에 대한 정적 분석만 수행하며, 테이블의 행은 절대 읽지 않습니다. 엔터프라이즈 환경에서는 100개 이상의 데이터베이스와 백만 개 이상의 열을 포함하는 대규모 환경을 일괄 스캔하고, 증분 스캔 및 영구적인 데이터 계보 저장소를 통해 관리할 수 있습니다.

자주 묻는 질문

스파크 클러스터가 실행 중이어야 스파크 리전 정보를 얻을 수 있나요?

아니요. SQLFlow는 Spark SQL 텍스트를 정적으로 파싱합니다. 따라서 풀 리퀘스트, 벤더 제공품, 마이그레이션 백로그 등 어디에서도 실행된 적이 없는 스크립트도 프로덕션 코드에서 얻을 수 있는 것과 동일한 열 수준의 계보를 분석할 수 있습니다.

이것은 OpenLineage의 Spark 통합과 어떻게 다른가요?

OpenLineage는 Spark 세션의 리스너를 통해 런타임 시 계보를 캡처하므로 실제 작업이 수행한 내용을 관찰하는 데 매우 유용합니다. SQLFlow는 SQL 코드 자체에서 계보를 도출하므로 실행되지 않은 코드까지 포함하고, 병합 전 검토 및 마이그레이션 감사를 지원하며, 클러스터 액세스가 필요하지 않습니다. 두 도구는 상호 보완적이며, SQLFlow는 런타임 계보와 함께 DataHub, Purview 또는 OpenMetadata로 내보낼 수 있습니다.

SQLFlow는 임시 뷰를 통해 추적 계보를 추적할 수 있습니까?

네. 체인 임시 보기 생성 또는 교체 문장은 엔드 투 엔드로 해결되므로 최종 CTAS의 열은 모든 스테이징 뷰를 거쳐 물리적 소스 테이블까지 추적되며 각 단계에서 함수와 집계가 적용됩니다.

여기서 Databricks SQL은 Spark SQL과 동일한 건가요?

아니요, SQLFlow는 각각 다른 방언 파서를 사용하여 구문을 처리합니다. Databricks SQL은 자체 구문 확장 기능을 가지고 있으므로 고유한 문법을 사용합니다. Databricks에서 실행하는 경우 Databricks 방언을 사용하고, 오픈 소스 Spark, EMR 또는 자체 관리형 클러스터에서 실행하는 경우 Spark SQL 방언을 사용하십시오.

SQLFlow가 내 데이터를 읽을 수 있나요?

아니요. SQL 코드와 선택적으로 스키마 메타데이터(테이블 및 열 정의)를 분석합니다. 행 데이터는 절대 접근하지 않습니다. 온프레미스 환경에서는 SQL 텍스트조차도 네트워크 내에 유지됩니다.

SQLFlow를 사용한 Spark SQL 계보 추적의 비용은 얼마입니까?

SQLFlow 클라우드는 무료로 시작하며, 프리미엄 버전은 월 $49.99입니다. 온프레미스 버전은 선택한 데이터베이스 유형별로 월 $500 또는 일회성 $4,800이며, 두 대의 서버에 설치할 수 있습니다. 자세한 내용은 다음을 참조하세요. 가격 자세한 내용은 다음을 참조하세요.

Spark SQL을 지금 추적하세요

Spark SQL 스크립트를 무료 시각화 도구에 붙여넣고 소스에서 대상으로 모든 열을 추적해 보세요. 또는 전체 시스템을 스캔하는 것에 대해 저희와 상담해 보세요.