TL;DR
- CrowDB의
crowdb-iceberg:latest컨테이너는 Iceberg 카탈로그, 테이블 저장소, 로컬 웹 콘솔을 단일 컨테이너로 실행하며,pandas와PyIceberg로 주문을 저장하고 도시별 결제 매출을 집계하는 예제를 제공함. - 실행 조건은 Linux amd64, Docker, Python 3.10–3.12이며, 평가용 데이터만 사용하고 로컬 9092 포트가 비어 있어야 함.
- 컨테이너는 9092 포트에서 카탈로그와 파일 서비스를, 9090 포트에서 로컬 콘솔을 제공하며 접속 정보는 컨테이너 안에서 생성됨.
- 예제는
pandas_demo.orders에 주문 6건을 기록하고 다시 읽으며, 취소 주문 1건을 제외한 유료 주문 5건의 도시별 매출을 집계함. - 동일한 컨테이너에서 스크립트를 다시 실행하면 테이블이 이미 존재하므로, 반복하려면 새 테이블 이름이나 새 임시 컨테이너를 사용해야 함.
컨테이너 시작
- Docker가 설치된 Linux amd64 호스트에서 로컬 9090 포트를 콘솔에, 9092 포트를 카탈로그와 파일 서비스에 연결해
crowdb/crowdb-iceberg:latest컨테이너를 실행함. - 브라우저에서
http://127.0.0.1:9090/에 접속해 Iceberg를 선택함. 예제 스크립트가pandas_demo.orders를 생성하기 전까지 테이블 트리는 비어 있음.
접속 정보와 클라이언트 설치
- 컨테이너에서
crowdb-monitor credentials show --format env를 실행해 접속 값을crowdb-iceberg.env파일에 저장하고,umask 077로 파일 접근 권한을 제한함. - 환경 파일에는
ICEBERG_URI와ICEBERG_TOKEN이 포함되며, 셸에 값을 불러온 뒤 Python 가상 환경을 만들고 활성화함. pyiceberg[pyarrow]==0.11.1과pandas를 설치하며, 아래 작업은 해당 컨테이너에서 생성한 접속 값을 사용함.
주문 6건 기록 및 다시 읽기
orders.py에서 환경 변수의 URI와 토큰으로 REST 유형의crowdb카탈로그를 불러옴.- 주문 데이터는 다음 6건이며, 각 행의 필드는 주문 ID, 도시, 상태, 미국 달러 금액 순서임.
1, Beijing, paid, 120;2, Shanghai, paid, 80;3, Beijing, cancelled, 2004, Shanghai, paid, 60;5, Shenzhen, paid, 50;6, Beijing, paid, 30pandas데이터프레임을 인덱스 없이 Apache Arrow 테이블로 변환하고,pandas_demo네임스페이스가 없으면 생성한 뒤pandas_demo.orders테이블을 만들고 데이터를 추가함.- 저장된 테이블을 Iceberg 카탈로그에서 다시 불러와 스캔하고,
pandas데이터프레임으로 변환함. status가paid인 행만 남겨 도시별 주문 수와 매출 합계를 계산하고, 매출 내림차순으로 정렬해 출력함.- 스크립트 실행 명령은
python orders.py임.
콘솔에서 테이블 확인
- 콘솔을 새로고침하고 Iceberg → pandas_demo → orders를 선택해 테이블, 스냅샷, 스크립트가 기록한 Parquet 파일을 확인함.
- 로컬 콘솔은 컨테이너를 점검하는 화면이며, 클라이언트와 쿼리 예제는 계속해서 9092 포트의 Iceberg 엔드포인트를 사용함.
- 같은 로컬 컨테이너에서 Cluster 화면으로 서비스 상태를 확인할 수 있으며, 콘솔 헤더에는 Healthy가 표시됨.
- Iceberg 화면은 실제
pandas_demo.orders테이블의 스냅샷에서 매니페스트와 Parquet 파일까지 이어지는 구성을 표시함. 생성되는 파일 이름은 실행마다 달라짐.
결과와 반복 실행
- 컨테이너에 저장된 행을 새로 스캔한 결과, 주문 1건이 취소 상태이므로 유료 주문 5건의 집계는 다음과 같음.
Beijing: 주문 2건, 매출 150달러Shanghai: 주문 2건, 매출 140달러Shenzhen: 주문 1건, 매출 50달러- 스크립트는
pandas_demo.orders를 생성하며, 같은 컨테이너에서 다시 실행하면 해당 테이블이 이미 존재함. 예제를 반복하려면 새 테이블 이름이나 새 임시 컨테이너를 사용함.
컨테이너와 접속 정보 정리
- 작업을 마치면 최대 120초 대기 후 임시 컨테이너를 중지하고 삭제하며,
crowdb-iceberg.env파일을 제거함. - 영구 볼륨 사용이나 기타 클라이언트 작업은 빠른 시작 안내와 Iceberg 매뉴얼을 참조함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요