Pinot Data Explorer
Pinot Data Explorer
Pinot Data Explorer는 Apache Pinot의 사용자 친화적 인터페이스로, 대화형 데이터 탐색, 쿼리, 시각화를 제공해요. 클러스터를 설정한 후 데이터와 API를 탐색하는 데 사용할 수 있어요.
본문
클러스터를 설정한 후에는 Pinot Data Explorer를 사용해 데이터와 API를 탐색하기 시작할 수 있어요.
브라우저에서 http://localhost:9000으로 이동해 Data Explorer UI를 열어 보세요.
Cluster Manager
Pinot Data Explorer를 열면 가장 먼저 보이는 화면은 Cluster Manager예요. Cluster Manager는 클러스터를 운영하고 관리하는 UI를 제공하며, 테넌트, 인스턴스, 테이블과 그 현재 상태의 개요를 보여줘요.

태스크 관리 (Task management)
Pinot Data Explorer는 클러스터 전체 태스크 컨트롤과 minion 큐 문제 해결을 분리해요:
- 왼쪽 탐색에서 Minion Tasks를 선택하면 Minion Task Manager 페이지가 열려요. 이 페이지는 태스크 유형, minion 인스턴스, 실행 중인 태스크, 대기 중인 태스크를 요약한 다음 태스크 큐, 태스크, 서브태스크로 드릴다운하게 해줘요.
- Controller 전체 스케줄링 세부 사항은 Cluster Manager에 있어요. Cron Scheduler Information 아코디언은 controller 스케줄러 상태와 메타데이터를 보여주고, Periodic Tasks 아코디언은 등록된 주기적 태스크를 나열하고 하나를 즉시 실행하게 해줘요. 실행 대화상자는 모든 테이블 또는 개별 테이블과 테이블 유형을 대상으로 지정할 수 있어요.
서버의 내용을 보려면 인스턴스 이름을 클릭하면 다음을 볼 수 있어요:

테이블 관리 (Table management)
테이블을 보려면 테이블 목록에서 이름을 클릭하세요. 테이블 상세 화면에서 테이블을 편집하거나 삭제하고, 스키마를 편집하거나 조정하고, 다른 여러 작업을 수행할 수 있어요.

예를 들어 yearID를 inverted 인덱스 목록에 추가하려면 Edit Table을 클릭하고, 추가할 칼럼을 넣고, Save를 클릭하면 돼요:

소비 일시 중지/재개 (Pause and resume consumption)
실시간 테이블의 경우 테이블 상세 화면에는 Pause/Resume Consumption 버튼(#15657)이 포함돼요. 이는 REST API 호출 없이 UI에서 직접 실시간 테이블의 수집을 일시 중지하고, 준비되면 재개하게 해줘요. 유지보수 기간이나 데이터 수집을 일시적으로 중단해야 할 때 유용해요.
소비 세그먼트 정보 (Consuming segments info)
실시간 테이블에 Consuming Segments Info 버튼(#15623)이 있어 현재 소비 중인 모든 세그먼트를 빠르게 볼 수 있어요. 파티션, 현재 오프셋, 소비 상태 같은 세부 사항을 보여줘 실시간 수집 상태를 모니터링하기 더 쉽게 만들어요.
세그먼트 리셋 (Reset segment)
UI는 Reset Segment 작업(#16078)을 지원해요. 테이블 상세 화면에서 직접 세그먼트를 리셋할 수 있어요. 세그먼트가 오류 상태에 걸려 재처리가 필요할 때 유용해요.
세그먼트 상태 필터 (Segment state filter)
테이블 상세 화면에 세그먼트 상태 필터(#16085)가 추가됐어요. 상태(예: ONLINE, CONSUMING, ERROR)로 세그먼트를 필터링해 주의가 필요한 세그먼트를 빠르게 찾을 수 있어요. 세그먼트 수가 많은 테이블에 특히 유용해요.
테이블 리밸런스 (Table rebalance)
테이블 상세 화면은 테이블 리밸런스 작업에 대한 접근도 제공해요. 더 나은 파라미터 검증과 진행 표시를 포함해 리밸런스 워크플로우의 신뢰성과 사용성을 개선하는 여러 UI 수정과 개선(#15511)이 이루어졌어요.
논리 테이블 관리 (Logical table management)
Pinot 1.4부터 Data Explorer에는 논리 테이블 관리 UI(#17878)가 포함돼요. 논리 테이블은 단일 통합 테이블로 쿼리할 수 있는 물리 테이블(REALTIME 및 OFFLINE)의 모음이에요.
논리 테이블 목록은 주요 Tables 페이지에서 물리 테이블 및 스키마와 함께 접근할 수 있어요. 여기서 다음을 할 수 있어요:
- 검색을 지원하는 클러스터의 모든 논리 테이블 탐색
- 구성, 매핑되는 물리 테이블 목록, 메타데이터를 포함한 논리 테이블 상세 보기
- 논리 테이블 구성 편집
- 확인 대화상자로 논리 테이블 삭제
논리 테이블에 대한 자세한 내용은 1.4.0 릴리스 노트의 Logical Table Support 섹션을 참조하세요.
머티리얼라이즈드 뷰 탐색 및 관리 (Materialized view discovery and management)
Data Explorer에는 클러스터의 쿼리 가능한 자산을 위한 Data Sources 허브도 포함돼요. 왼쪽 탐색의 Data Sources를 사용해 물리 테이블과 머티리얼라이즈드 뷰를 전환할 수 있어요.
Materialized Views 페이지는 각 MV를 기본 테이블, 워터마크, VALID 및 STALE 파티션 수, 마지막 새로고침 시간, 오래됨 SLO, controller가 반환한 메타데이터 오류와 함께 나열해요. 머티리얼라이즈드 뷰 이름을 클릭하면 상세 페이지가 열리며 저장된 definedSQL, 분할 사양, 파티션 런타임 상태, 원시 메타데이터 JSON, 페이지 데이터를 새로고침하거나 MV를 드롭하는 컨트롤을 보여줘요.
UI는 계속 탐색 및 모니터링 표면이에요. 쿼리 실행은 브로커를 통해 일어나요: MV 테이블을 직접 쿼리하거나, pinot.broker.query.enable.materialized.view.rewrite=true일 때 브로커가 적격한 SSE 기본 테이블 쿼리를 투명하게 다시 쓰게 할 수 있어요. 생성 모델과 쿼리 계약은 Materialized Views를 참조하세요.
Query Console
Query Console로 이동하면 쿼리 인터페이스를 볼 수 있어요. Query Console은 Pinot 클러스터에 대해 SQL 쿼리를 실행하고 대화형으로 결과를 보게 해줘요.
왼쪽에 baseballStats 테이블이 나열된 것을 볼 수 있어요(스트리밍 또는 하이브리드 퀵스타트를 사용했다면 meetupRSVP나 airlineStats를 볼 거예요). 테이블 이름을 클릭하면 테이블 칼럼의 모든 이름과 데이터 타입이 표시돼요.
텍스트 상자에 select * from baseballStats limit 10 같은 샘플 쿼리를 입력하고 Run Query 버튼을 클릭해 실행할 수도 있어요.
콘솔에 초점이 있을 때 Cmd + Enter로도 쿼리를 실행할 수 있어요.

시도해 볼 수 있는 샘플 쿼리 몇 가지:
select playerName, max(hits)
from baseballStats
group by playerName
order by max(hits) desc
select sum(hits), sum(homeRuns), sum(numberOfGames)
from baseballStats
where yearID > 2010
select *
from baseballStats
order by league
Pinot는 쿼리에 SQL을 사용해요. 완전한 문법 레퍼런스는 SQL Syntax and Operators Reference를 참조하세요. 쿼리 옵션, 예제, 엔진 세부 사항은 Querying Pinot을 참조하세요.
시계열 쿼리 실행 (Time-series query execution)
Query Console은 또한 시계열 쿼리 실행(#16305)을 지원해요. Time Series Engine 베타의 일부로 도입됐어요. 현재 Controller UI는 controller의 Prometheus 호환 /query_range 엔드포인트(#16286)에 대해 M3QL 쿼리를 실행하는 전용 페이지를 추가했어요. 시간 범위 컨트롤을 제공하고 UI에서 직접 원시 JSON 응답을 보여줘요.
REST API
Pinot Admin UI에는 클러스터를 운영하고 관리하는 데 필요한 모든 API가 포함돼요. 상태 확인, 인스턴스 관리, 스키마 및 테이블 관리, 데이터 세그먼트 관리를 포함한 Pinot 클러스터 관리용 API 세트를 제공해요.

Table -> List all tables in cluster로 이동해 Try it out을 클릭한 다음 Execute를 클릭해 이 클러스터의 테이블을 확인해 봅시다. 여기에 baseballStats 테이블이 나열된 것을 볼 수 있어요. controller API에 만들어진 정확한 cURL 호출도 볼 수 있어요.

Tables -> Get/Enable/Disable/Drop a table로 이동해 Try it out을 클릭하고, 테이블 이름에 baseballStats를 입력한 다음 Execute를 클릭해 이 테이블의 구성을 볼 수 있어요.
Schema -> List all schemas in the cluster로 이동해 Try it out을 클릭한 다음 Execute를 클릭해 클러스터의 스키마를 확인해 봅시다. 이 목록에서 baseballStats라는 스키마를 볼 수 있어요.

Schema -> Get a schema로 이동해 Try it out을 클릭하고, 스키마 이름에 baseballStats를 입력한 다음 Execute를 클릭해 스키마를 살펴봅시다.

마지막으로 Segment -> List all segments로 이동해 Try it out을 클릭하고, 테이블 이름에 baseballStats를 입력한 다음 Execute를 클릭해 클러스터의 데이터 세그먼트를 확인해 봅시다. 이 테이블에는 baseballStats_OFFLINE_0이라는 세그먼트가 하나 있어요.
자신의 데이터와 스키마를 업로드하는 방법을 배우려면 배치 수집 또는 스트림 수집을 참조하세요.