코드 설정
코드 설정 (Code Setup)
Pinot 개발 환경을 설정하는 방법을 다루는 문서예요.
출처: 문서
본문
Pinot에 기여하려면 아래 지침을 따라요.
Git
Pinot는 소스 코드 관리를 위해 git을 사용해요. Git이 처음이라면 Git 기초와 브랜치 관리, 리베이스 같은 일반적인 작업을 검토하는 것이 좋아요.
소스 코드 가져오기 (Getting the Source Code)
fork 만들기 (Create a fork)
Apache Pinot 저장소에 생성되는 브랜치 수를 제한하기 위해 이 페이지의 fork 버튼을 클릭해 fork를 만들 것을 권장해요. fork 워크플로우에 대해 자세히 알아보기
로컬에 저장소 clone (Clone the repository locally)
$ mkdir workspace
$ cd workspace
$ git clone [email protected]:<github username>/pinot.git
$ cd pinot
# set upstream
$ git remote add upstream https://github.com/apache/pinot
# check that the upstream shows up correctly
$ git remote -v
Maven
Pinot는 Maven 프로젝트이며 Maven에 익숙하면 Pinot 코드 작업에 도움이 돼요. Maven이 처음이라면 여기에서, 5분 개요도 볼 수 있어요.
프로젝트를 설정하려면 다음 maven 명령을 실행하세요:
# compile, download sources
$mvn install package -DskipTests -Pbin-dist -DdownloadSources -DdownloadJavadocs
Scala 버전 (Scala Version)
최근 버전부터 Pinot는 모든 Scala 기반 의존성과 커넥터(Spark, Kafka 3.x 등)에 기본적으로 Scala 2.13을 사용해요.
환경 호환성을 위해 Scala 2.12로 빌드해야 한다면 Maven 프로파일을 사용하세요:
# compile with Scala 2.12
$ mvn install package -DskipTests -Pbin-dist -Pscala-2.12 -DdownloadSources -DdownloadJavadocs
이것은 다음 커넥터·라이브러리에 영향을 미쳐요:
- Spark Pinot Connector
- Kafka 3.0 Connector
- 기타 Scala 기반 의존성
IDE 설정 (Set up IDE)
프로젝트를 선호하는 IDE로 가져와요. IDE에 따라 스타일시트를 설정하세요. intellij와 eclipse 지침을 제공했어요. 다른 IDE를 사용한다면 이것을 기반으로 한 스타일시트를 사용하세요.
Intellij
Pinot 스타일시트를 가져오려면 intellij를 실행하고 Preferences(Mac) 또는 Settings(Linux)로 이동해요.
Editor->Code Style->Java로 이동Import Scheme->Intellij IDES code style XML선택- 워크스페이스의
pinot/config폴더에서codestyle-intellij.xml선택. Apply 클릭.
Eclipse
Pinot 스타일시트를 가져오려면 eclipse를 실행하고 Preferences(Mac) 또는 Settings(Linux)로 이동해요.
- Java->Code Style->Formatter로 이동
- 워크스페이스의
pinot/config folder에서codestyle-eclipse.xml선택. Apply 클릭.
IDE가 설정되면 배치 모드용 Batch QuickStart 또는 실시간 모드용 Realtime QuickStart를 실행할 수 있어요.
배치 퀵스타트 (Batch Quickstart)
- 모든 Pinot 컴포넌트(ZK, Controller, Server, Broker)를 같은 JVM에서 시작
- Baseball Stats 테이블 생성
브라우저에서 localhost:9000으로 이동해 쿼리 콘솔을 사용해 보세요.
JDK 17 또는 21의 경우 VM 옵션에 아래를 추가해야 해요:
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--enable-native-access=ALL-UNNAMED
--add-modules jdk.incubator.vector
실시간 퀵스타트 (Real-time Quickstart)
- 모든 Pinot 컴포넌트(ZK, Controller, Server, Broker)를 같은 JVM에서 시작
- 같은 JVM에서 Kafka 시작
- MeetUpRSVP 테이블 생성
- 미팅 이벤트를 Kafka로 라이브 스트리밍
브라우저에서 localhost:9000으로 이동해 meetup RSVP 테이블을 사용해 보세요.