Azure Databricks 레이크하우스로 데이터 수집
Azure Databricks는 Delta Lake에 의해 지원되는 레이크하우스로 데이터를 수집하기 위한 다양한 방법을 제공합니다. 이 문서에서는 지원되는 수집 도구 및 데이터 원본 및 대기 시간과 같은 기준에 따라 사용할 방법에 대한 지침을 나열합니다.
데이터 수집 및 처리 메서드
다음 방법을 사용하여 Databricks로 데이터를 수집할 수 있습니다.
- 주기적이지 않은 처리에 대한 데이터 행 집합의 일괄 수집
- 실시간 처리를 위해 도착하는 개별 데이터 행 또는 데이터 행 집합의 스트리밍 수집
수집된 데이터는 Delta 테이블에 로드되어, 다운스트림 데이터 및 AI 사용 사례에서 사용할 수 있습니다. Databricks의 Lakehouse 아키텍처로 인해 사용 사례 간에 데이터를 복제할 필요가 없으며 모든 데이터에서 중앙 집중식 액세스 제어, 감사, 계보 및 데이터 검색에 Unity 카탈로그를 활용할 수 있습니다.
배치 수집
일괄 처리 수집 프로세스를 사용하면, 데이터를 행 집합(또는 일괄 처리)으로 Databricks에 로드할 수 있으며, 이는 일정(예: 매일)에 따라 또는 수동으로 트리거됩니다. 기존 추출, 변환, 로드(ETL) 사용 사례의 "추출" 부분을 나타냅니다. 배치 수집을 사용하여 다음 위치에서 데이터를 로드할 수 있습니다.
- CSV와 같은 로컬 파일
- Amazon S3, Azure Data Lake Storage 및 Google Cloud Storage를 포함한 클라우드 개체 스토리지
- Salesforce와 같은 SaaS 애플리케이션 및 SQL Server와 같은 데이터베이스
일괄 처리 수집은 CSV, TSV, JSON, XML, Avro, ORC, Parquet 및 텍스트 파일을 비롯한 다양한 파일 원본 형식을 지원합니다.
Databricks는 기존의 일괄 처리 수집 및 증분 일괄 처리 수집 옵션을 모두 지원합니다. 기존 일괄 처리 수집은 실행될 때마다 모든 레코드를 처리하지만 증분 일괄 처리 수집은 데이터 원본에서 새 레코드를 자동으로 검색하고 이미 수집된 레코드를 무시합니다. 즉, 더 적은 데이터를 처리해야 하므로 수집 작업이 더 빠르게 실행되고 컴퓨팅 리소스를 보다 효율적으로 사용합니다.
전통적인 (일회성) 일괄 처리 수집
데이터 추가 UI를 사용하여 로컬 데이터 파일을 업로드하거나 공용 URL에서 파일을 다운로드할 수 있습니다. 파일 업로드을 참조하세요.
증분 수집 일괄 처리
이 섹션에서는 지원되는 증분 일괄 처리 수집 도구에 대해 설명합니다.
스트리밍 테이블
CREATE STREAMING TABLE
SQL 명령을 사용하면 클라우드 개체 스토리지에서 스트리밍 테이블에 데이터를 증분 방식으로 로드할 수 있습니다.
CREATE STREAMING TABLE를 참조하십시오.
예제: 스트리밍 테이블을 사용한 점진적 배치 인제스트
CREATE OR REFRESH STREAMING TABLE customers
AS SELECT * FROM read_files("/databricks-datasets/retail-org/customers/", "csv")
Cloud 오브젝트 스토리지 커넥터
기본 제공 클라우드 개체 스토리지 커넥터인 자동 로더를 사용하면 Amazon S3(S3), Azure Data Lake Storage Gen 2(ALDS2) 또는 GCS(Google Cloud Storage)에 도착하면 새 데이터 파일을 증분하고 효율적으로 처리할 수 있습니다. 자동 로더참조하세요.
예제: 자동 로더를 사용한 증분 일괄 로드
df = spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("rescuedDataColumn", "_rescued_data")
.schema("/databricks-datasets/retail-org/customers/schema")
.load("/databricks-datasets/retail-org/customers/")
완전 관리형 커넥터
Lakeflow Connect는 Salesforce와 같은 SaaS 애플리케이션 및 SQL Server와 같은 데이터베이스에서 수집하는 완전 관리형 커넥터를 제공합니다. 관리형 커넥터는 다음을 사용하여 사용할 수 있습니다.
- Databricks UI
- Databricks CLI
- Databricks API들
- Databricks SDK
- Databricks 자산 번들(DAB)
Lakeflow Connect참조하세요.
스트리밍 수집
스트리밍 수집을 사용하면 데이터 행이 생성되는 즉시 지속적으로 데이터를 로드하여 거의 실시간으로 도착과 동시에 쿼리할 수 있습니다. 스트리밍 수집을 사용하여 Apache Kafka, Amazon Kinesis, Google Pub/Sub 및 Apache Pulsar와 같은 원본에서 스트리밍 데이터를 로드할 수 있습니다.
또한 Databricks는 기본 제공 커넥터를 사용하여 스트리밍 수집을 지원합니다. 이러한 커넥터를 사용하면 스트리밍 원본에서 도착하는 새 데이터를 증분하고 효율적으로 처리할 수 있습니다. 스트리밍 데이터 원본 구성 참조하세요.
예제: Kafka 스트리밍 인제션
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
DLT를 사용하여 일괄 처리 및 스트리밍 수집
Databricks는 DLT 사용하여 안정적이고 확장 가능한 데이터 처리 파이프라인을 빌드하는 것이 좋습니다. DLT는 일괄 처리 및 스트리밍 수집을 모두 지원하며 자동 로더에서 지원하는 모든 데이터 원본에서 데이터를 수집할 수 있습니다.
예제: DLT를 사용한 증분 일괄 수집
@dlt.table
def customers():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.load("/databricks-datasets/retail-org/customers/")
)
예제: DLT 사용하여 Kafka에서 스트리밍 수집
@dlt.table
def kafka_raw():
return (
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
)
수집 일정
일회성 작업으로, 되풀이 일정에 따라 또는 지속적으로 데이터를 수집할 수 있습니다.
- 거의 실시간 스트리밍 사용 사례의 경우 연속 모드를 사용합니다.
- 일괄 처리 수집 사례의 경우, 한 번 수집하거나 반복 일정으로 설정합니다.
수집을 참조하고, 작업 및 트리거된 파이프라인 모드와 연속 파이프라인 모드를 비교하세요.
데이터 입력 파트너
많은 타사 도구는 Databricks로의 일괄 처리 또는 스트리밍 수집을 지원합니다. Databricks는 원본 시스템에 대한 액세스를 구성하고 데이터를 수집하는 단계는 도구에 따라 다르지만 다양한 타사 통합의 유효성을 검사합니다. 유효성이 검사된 도구 목록은 수집 파트너 참조하세요. 일부 기술 파트너는 타사 도구를 lakehouse 데이터에 연결하는 것을 간소화하는 UI를 제공하는 Databricks 파트너 커넥트기능도 제공합니다.
DIY 수집
Databricks는 일반 컴퓨팅 플랫폼을 제공합니다. 따라서 Python 또는 Java와 같은 Databricks에서 지원하는 프로그래밍 언어를 사용하여 고유한 수집 커넥터를 만들 수 있습니다. 데이터 로드 도구, Airbyte 및 Debezium과 같은 인기 있는 오픈 소스 커넥터 라이브러리를 가져오고 활용할 수도 있습니다.
섭취 대체
Databricks는 대용량 데이터 볼륨, 짧은 대기 시간 쿼리 및 타사 API 제한을 수용하도록 크기가 조정되므로 대부분의 사용 사례에 대한 수집을 권장합니다. 수집은 원본 시스템에서 Azure Databricks로 데이터를 복사하므로 시간이 지남에 따라 부실해질 수 있는 중복 데이터가 발생합니다. 데이터를 복사하지 않으려면 다음 도구를 사용할 수 있습니다.
- Lakehouse Federation 사용하면 데이터를 이동하지 않고도 외부 데이터 원본을 쿼리할 수 있습니다.
- 델타 공유 통해 플랫폼, 클라우드 및 지역 간에 데이터를 안전하게 공유할 수 있습니다.
그러나 데이터를 복사하지 않으려면 Lakehouse 페더레이션 또는 델타 공유를 사용합니다.
델타 공유를 사용하는 경우
다음 시나리오에 대해 델타 공유를 선택합니다.
- 데이터 중복 제한
- 가능한 가장 최신 데이터 쿼리
Lakehouse 페더레이션을 사용하는 경우
다음 시나리오에 대해 Lakehouse 페더레이션을 선택합니다.
- ETL 파이프라인에 대한 임시 보고 또는 개념 증명 작업
데이터 수집 방법을 선택할 때의 고려 사항
배려 | 안내 |
---|---|
데이터 원본 | 데이터 원본에 대한 Lakeflow Connect 네이티브 커넥터가 있는 경우 데이터를 수집하는 가장 간단한 방법이 됩니다. Lakeflow Connect에서 지원되지 않는 데이터 원본의 경우 원본에서 데이터를 추출한 다음 자동 로더를 사용하여 Databricks로 데이터를 수집합니다. 로컬 파일의 경우 Databricks UI를 사용하여 데이터를 업로드합니다. |
지연 | 데이터를 거의 실시간으로 분석하려면 스트리밍을 사용하여 증분 처리를 활용합니다. 스트리밍을 사용하면 각 레코드가 도착하는 즉시 데이터를 쿼리할 수 있습니다. 그렇지 않으면 일괄 처리 방식을 사용하세요. |
데이터 이동 | 원본 시스템에서 Databricks로 데이터를 복사할 수 없는 경우 Lakehouse 페더레이션 또는 델타 공유를 사용합니다. |
Delta Lake로 데이터 마이그레이션
기존 데이터를 Delta Lake로 마이그레이션하는 방법을 알아보려면 데이터를 Delta Lake로 마이그레이션을 참조하세요.
COPY INTO(레거시)
CREATE STREAMING TABLE
SQL 명령은 클라우드 개체 스토리지에서 증분 수집을 위해 레거시 COPY INTO
SQL 명령에 대한 권장 대안입니다.
COPY INTO를 참조하십시오. 더 확장 가능하고 강력한 파일 수집 환경을 위해 Databricks는 SQL 사용자가 COPY INTO
대신 스트리밍 테이블을 활용하는 것이 좋습니다.