배치 수집

배치 수집 (Batch Ingestion)

파일이나 웨어하우스, 분산 처리 잡에서 만들어진 기성 데이터를 Pinot이 통째로 올려야 할 때 배치 수집을 고르게 돼요.

출처: Batch Ingestion

본문

배치 수집(Batch Ingestion)은 클러스터 밖에서 Pinot 세그먼트를 미리 만들어 놓고, 데이터가 이미 모양을 갖춘 뒤에 Pinot으로 밀어 넣는 방식이에요. 데이터가 큰 덩어리로 바뀔 때, 결정적인 백필(deterministic backfill)이 필요할 때, 또는 파이프라인이 이미 파일이나 세그먼트 산출물을 만들 때 사용하면 좋아요.

가장 중요한 설계 결정은 프레임워크가 아니라 **출력 계약(output contract)**이에요. 즉 스키마가 어떻게 생겼는지, 테이블이 무엇을 기대하는지, 세그먼트가 어디에 놓이는지가 핵심이에요.

일반적인 배치 경로

  • Spark 기반 수집.
  • Hadoop 스타일 분산 수집.
  • 과거 범위에 대한 백필 잡. Pinot은 백필 입력 파일이 원래 수집보다 적을 수 있는 경우를 위해 LaunchBackfillIngestionJob을 제공해요 — Backfill Data 참고.
  • 차원 테이블(dimension table) 및 기타 특수 오프라인 로드.

미리 결정할 것들

잡 자체를 최적화하기 전에 파일 포맷, 딥스토리지 대상, 세그먼트 푸시 워크플로를 먼저 정하세요. 대부분의 배치 수집 문제는 바로 그 경계에서 가정이 어긋나서 생겨요.

입력 파일 선택

수집 잡 스펙에서 includeFileNamePattern과 excludeFileNamePattern을 사용해 입력 경로를 필터링할 수 있어요. 둘 다 Java NIO PathMatcher 패턴을 받으며 glob: 또는 regex: 접두사를 사용해요:

includeFileNamePattern: 'glob:**/*.avro'
excludeFileNamePattern: 'regex:.*[.]tmp'

패턴은 파일 이름뿐 아니라 정규화된 전체 경로(normalized path)와 매치해야 해요. Java 정규식 문법, 잡 스펙 템플릿 이스케이프, URI 정규화에 대한 자세한 내용은 File name patterns를 참고하세요.

자세히 보기

단계별 기존 배치 문서는 Import Data와 데이터 수집 개요 (Data Ingestion Overview)에 있어요.

이 페이지가 다루는 내용

이 페이지는 언제 배치 수집을 선택할지, 그리고 그것을 결정짓는 주요 설계 요소들을 다뤘어요.

다음 단계

소스 시스템이 실시간 이벤트 스트림이라면 스트림 수집을 읽어 보세요.

더 알아보기 (Learn more)