네이티브 배치 수집으로 데이터 로드하기

네이티브 배치 수집으로 데이터 로드하기 (Load data with native batch ingestion)

Apache Druid의 네이티브 배치 수집(native batch ingestion) 기능을 사용해 데이터 파일을 로드하고 쿼리하는 방법을 보여 드릴게요. 이 튜토리얼에서는 Druid의 데이터 로더(data loader)를 이용해 배치 파일 로딩을 진행해요.

출처: 문서

본문

사전 준비 (Prerequisites)

Druid 퀵스타트 (Druid quickstart)에 설명된 대로 Druid를 설치하고 Druid 서비스를 시작한 뒤, 웹 콘솔을 열어 주세요.

데이터 로드하기 (Load data)

수집 스펙(ingestion spec)은 Druid가 읽고 저장하는 데이터의 스키마를 정의해요. 수집 스펙은 직접 작성하거나 데이터 로더를 사용해서 만들 수 있는데, 여기서는 Druid의 네이티브 배치 수집으로 배치 파일 로딩을 할 때 데이터 로더를 사용할 거예요.

Druid 배포판에는 사용할 수 있는 샘플 데이터가 들어 있어요. Druid 루트 디렉터리의 quickstart/tutorial/wikiticker-2015-09-12-sampled.json.gz 에 있는 샘플 데이터는 특정 하루 동안의 Wikipedia 페이지 편집을 나타내요.

  • 웹 콘솔 헤더에서 Load data 를 클릭해 주세요.

  • Local disk 타일을 선택한 뒤 Connect data 를 클릭해 주세요.

  • 다음 값을 입력해 주세요:

    • Base directory: quickstart/tutorial/
    • File filter: wikiticker-2015-09-12-sampled.json.gz

    UI에서 제공하는 대로 기본 디렉터리와 와일드카드 파일 필터를 분리해서 입력하면, 한 번에 여러 파일을 수집 대상으로 지정할 수 있어요.

  • Apply 를 클릭해 주세요. 데이터 로더가 원본 데이터를 표시해서 데이터가 예상대로 나타나는지 확인할 기회를 줘요. 데이터 로드 단계에서 현재 어느 위치에 있는지(여기서는 Connect)가 콘솔 상단에 표시되는 걸 볼 수 있을 거예요. 언제든 다른 단계를 클릭해 앞뒤로 이동할 수 있어요.

  • Next: Parse data 를 클릭해 주세요. 데이터 로더가 데이터 형식에 맞는 파서를 자동으로 결정하려고 시도해요. 이 경우 오른쪽 아래 Input format 필드에 표시된 대로 데이터 형식을 json 으로 식별해요. 다른 Input format 옵션을 선택해서 각 옵션의 설정과 Druid가 다른 유형의 데이터를 파싱하는 방식을 살펴봐도 좋아요.

  • JSON 입력 형식이 선택된 상태에서 Next: Parse time 을 클릭해 주세요. Parse time 설정은 데이터의 기본 타임스탬프 컬럼을 보고 조정하는 곳이에요. Druid는 데이터에 기본 타임스탬프 컬럼(내부적으로 __time 이라는 컬럼에 저장)이 있어야 해요. 데이터에 타임스탬프가 없다면 Constant value 를 선택해 주세요. 이 예시에서는 데이터 로더가 time 컬럼이 기본 시간 컬럼으로 사용할 수 있는 유일한 후보라고 판단해요.

  • 몇 단계를 건너뛰며 Next: Transform, Next: Filter, 그리고 Next: Configure schema 를 클릭해 주세요. 수집 시점의 변환(transform)과 필터(filter)를 적용하는 것은 이 튜토리얼의 범위를 벗어나므로, 변환이나 필터링 설정을 조정할 필요는 없어요.

  • Configure schema 설정은 어떤 dimensions과 metrics를 수집할지 구성하는 곳이에요. 이 구성의 결과가 수집 후 Druid에 데이터가 정확히 어떻게 나타날지를 결정해요. 데이터셋이 매우 작으므로, Rollup 스위치를 꺼서 rollup을 비활성화하고, 프롬프트가 뜨면 변경을 확인해 주세요.

  • Next: Partition 을 클릭해 데이터가 세그먼트로 어떻게 분할될지를 구성해 주세요. 이 경우 Segment granularity 로 DAY 를 선택해 주세요. 데이터셋이 작으므로 세그먼트가 하나만 있어도 되는데, DAY 를 세그먼트 granularity로 선택하면 그렇게 돼요.

  • Next: Tune 과 Next: Publish 를 클릭해 주세요.

  • Publish 설정은 Druid에서 데이터소스 이름을 지정하는 곳이에요. 기본 이름을 wikiticker-2015-09-12-sampled 에서 wikipedia 로 바꿔 볼게요.

  • Next: Edit spec 을 클릭해 데이터 로더로 만든 수집 스펙을 검토해 주세요. 이전 단계로 돌아가서 설정을 바꾸면 스펙이 어떻게 변하는지 확인해도 좋아요. 반대로 스펙을 직접 수정하면 이전 단계에 반영되는 것도 볼 수 있어요. 수집 스펙을 로드하는 다른 방법은 Tutorial: Loading a file을 참고해 주세요.

  • 스펙이 마음에 들면 Submit 을 클릭해 주세요. 이제 wikipedia 데이터소스에 대한 새 태스크가 Ingestion 뷰에 나타나요. 태스크는 완료되는 데 1~2분이 걸릴 수 있어요. 완료되면 태스크 상태가 "SUCCESS" 로 표시되고 태스크의 지속 시간이 함께 보여요. 뷰는 자동으로 새로고침되도록 설정되어 있어서, 상태 변화를 보려고 브라우저를 새로고침할 필요는 없어요. 태스크 성공은 한 개 이상의 세그먼트가 생성되어 데이터 서버가 이를 가져갔다는 뜻이에요.

데이터 쿼리하기 (Query the data)

이제 콘솔에서 이 데이터를 데이터소스로 확인하고 다음과 같이 쿼리를 시도해 볼 수 있어요:

  • 콘솔 헤더에서 Datasources 를 클릭해 주세요. wikipedia 데이터소스가 보이지 않으면 세그먼트 로딩이 끝날 때까지 잠시 기다려 주세요. 데이터소스는 Availability 컬럼에 "Fully available" 로 표시되면 쿼리할 수 있어요.
  • 데이터소스를 사용할 수 있게 되면 해당 데이터소스의 Actions 메뉴를 열고 Query with SQL 을 선택해 주세요.

데이터소스에 대해 수행할 수 있는 다른 작업들(보존 규칙(retention rules) 구성, 컴팩션(compaction) 등)도 확인해 볼 수 있어요.

  • 미리 채워진 쿼리 SELECT * FROM "wikipedia" 를 실행해서 결과를 확인해 주세요.

더 알아보기 (Learn more)