SQL 기반 인제스트

SQL 기반 인제스트 (SQL-based ingestion)

멀티 스테이지 쿼리(MSQ) 태스크 엔진으로 SQL 기반 배치 인제스트를 수행하는 방법이에요. INSERT·REPLACE 문을 배치 태스크로 실행해서 대규모 데이터를 손쉽게 드루이드(Druid)로 유입할 수 있어요.

출처: 문서

본문

이 페이지는 멀티 스테이지 쿼리(MSQ) 태스크 엔진을 사용한 SQL 기반 배치 인제스트를 다루어요. 인제스트 방법 표를 보고 어떤 인제스트 방식이 자신에게 맞는지 판단하세요.

Apache® Druid는 SQL 기반 인제스트를 위해 MSQ 태스크 엔진을 지원해요. 이 엔진을 쓰면 INSERT와 REPLACE 문을 배치 태스크로 실행할 수 있어요. 실험적 기능으로, 태스크 엔진은 SELECT 쿼리를 배치 태스크로 실행하는 것도 지원해요.

거의 모든 SELECT 기능이 멀티 스테이지 쿼리(MSQ) 태스크 엔진에서 사용 가능해요. 단, Known issues 페이지의 SELECT 문 섹션에 나열된 예외는 제외돼요. 덕분에 INSERT ... SELECT와 REPLACE ... SELECT 문의 일부로 변환(transformation), 필터, JOIN, 집계(aggregation) 등을 아주 유연하게 적용할 수 있어요. 또한 데이터베이스 내 변환(in-database transformation), 즉 다른 테이블에 대한 쿼리를 기반으로 새 테이블을 만드는 것도 가능해요.

용어 (Vocabulary)

  • Controller: query_controller 타입의 인덱싱 서비스 태스크로, 쿼리의 실행을 관리해요. 쿼리 하나마다 컨트롤러 태스크가 하나씩 존재해요.
  • Worker: query_worker 타입의 인덱싱 서비스 태스크로, 쿼리를 실행해요. 쿼리당 워커 태스크가 여러 개일 수 있어요. 내부적으로 태스크는 프로세싱 풀을 사용해 항목을 병렬로 처리해요(워커 태스크 내부에서 druid.processing.numThreads 만큼의 실행 병렬성까지 가능).
  • Stage: 워커 태스크들 사이에서 병렬화되는 쿼리 실행의 한 단계예요. 워커는 스테이지 사이에 서로 데이터를 교환해요.
  • Partition: 워커 태스크가 출력하는 데이터의 조각이에요. INSERT 또는 REPLACE 쿼리에서 마지막 스테이지의 파티션은 드루이드 세그먼트가 돼요.
  • Shuffle: 워커는 셔플(shuffle)이라 불리는 과정에서 파티션 단위로 서로 데이터를 교환해요. 셔플 중 각 출력 파티션은 클러스터링 키로 정렬돼요.

외부 리소스 타입 (External resource types)

MSQ 태스크 엔진은 EXTERN 함수를 통해 외부 소스에서 데이터를 읽고 쓰는 것을 지원해요.

EXTERN을 사용하려면 리소스 타입 EXTERNAL, 리소스 이름 "EXTERNAL"에 대한 READ 권한이 필요해요. EXTERN을 사용할 때 403 오류가 발생한다면 올바른 권한이 있는지 확인하세요. S3나 LOCALFILES 같은 입력 소스 특정 테이블 함수도 마찬가지예요.

다음 단계 (Next steps)

  • 핵심 개념 문서를 읽고 SQL 기반 인제스트와 멀티 스테이지 쿼리가 어떻게 동작하는지 자세히 알아보세요.
  • 예제 문서를 살펴보며 SQL 기반 인제스트가 실제로 어떻게 쓰이는지 확인해 보세요.
  • Query 뷰 문서를 살펴보고 웹 콘솔에서 시작해 보세요.

더 알아보기 (Learn more)