SQL 기반 인제스트 알려진 문제

SQL 기반 인제스트 알려진 문제 (SQL-based ingestion known issues)

MSQ 태스크 엔진을 쓸 때 지금까지 확인된 한계와 지원되지 않는 기능들을 정리한 문서예요. 인제스트를 설계하기 전에 이 제약들을 먼저 확인해 두면 예상치 못한 오류를 줄일 수 있어요.

출처: 문서

본문

MSQ 태스크 런타임 (Multi-stage query task runtime)

  • 내결함성(fault tolerance)이 부분적으로만 구현되어 있어요. 워커(worker)가 예기치 않게 종료되면 다시 시작(relaunch)되지만, 컨트롤러(controller)가 예기치 않게 종료되면 다시 시작되지 않아요.
  • 워커 태스크의 스테이지 출력은 druid.indexer.task.baseDir이 지정하는 작업 디렉터리에 저장돼요. 많은 양의 출력 데이터를 생성하는 스테이지는 사용 가능한 모든 디스크 공간을 소진할 수 있어요. 이 경우 쿼리는 "No space left on device"라는 메시지를 포함한 UnknownError로 실패해요.

SELECT 문 (SELECT Statement)

  • GROUPING SETS는 구현되지 않았어요. 이러한 기능을 사용하는 쿼리는 QueryNotSupported 오류를 반환해요.

INSERT 및 REPLACE 문 (INSERT and REPLACE Statements)

  • INSERT INTO tbl (a, b, c) SELECT ... 같은 컬럼 목록을 포함한 INSERT와 REPLACE 문은 구현되지 않았어요.
  • INSERT ... SELECT와 REPLACE ... SELECT는 컬럼 이름을 기준으로 SELECT 문의 컬럼을 삽입해요. 이는 컬럼을 위치(position) 기준으로 삽입하는 SQL 표준 동작과 달라요.
  • INSERT와 REPLACE는 인제스트 스펙에서 지원되는 모든 옵션을 지원하지는 않아요. 여기에는 createBitmapIndex, multiValueHandling 차원(dimension) 속성, indexSpec, tuningConfig 속성이 포함돼요.

EXTERN 함수 (EXTERN Function)

  • 스키마 없는 차원(schemaless dimensions) 기능은 사용할 수 없어요. 모든 컬럼과 타입은 EXTERN 함수의 signature 파라미터로 명시적으로 지정해야 해요.
  • 많은 수의 파일과 일치하는 입력 소스를 사용하는 EXTERN은 컨트롤러 태스크의 사용 가능한 메모리를 소진할 수 있어요.
  • EXTERN은 외부 파일을 참조해요. druid 입력 소스에 접근하려면 FROM을 사용하세요.

WINDOW 함수 (WINDOW Function)

  • 윈도우의 최대 요소 수는 100,000을 초과할 수 없어요.
  • MSQ 엔진의 leafOperators를 피하기 위해, 네이티브 엔진에 비어 있지 않은 leafOperator가 있는 경우 윈도우 함수는 윈도우 스테이지 뒤에 추가 스캔 스테이지를 두어요.

자동 컴팩션 (Automatic compaction)

다음의 알려진 문제와 한계는 MSQ 태스크 엔진을 사용한 자동 컴팩션에 영향을 줘요.

  • metricSpec 필드는 특정 애그리게이터에서만 지원돼요. 자세한 내용은 지원되는 애그리게이터 문서를 참고하세요.
  • 다이내믹(dynamic) 및 레인지 기반(range-based) 파티셔닝만 지원돼요.
  • metricSpec이 비어 있지 않거나 null이 아닐 때만 rollup을 true로 설정해야 해요.
  • 문자열 차원에서만 파티셔닝할 수 있어요. 다중 값 문자열 차원은 지원되지 않아요.
  • maxTotalRows 설정은 DynamicPartitionsSpec에서 지원되지 않아요. 대신 maxRowsPerSegment를 사용하세요.
  • 세그먼트는 __time이 첫 번째 컬럼으로만 정렬될 수 있어요.

더 알아보기 (Learn more)

  • MSQ 참조 문서에서 오류 코드와 지원 함수 목록을 확인해 보세요.
  • MSQ 핵심 개념에서 INSERT·REPLACE·EXTERN의 동작 원리를 살펴보세요.
  • 자동 컴팩션 문서에서 지원되는 애그리게이터를 자세히 알아보아요.