빅데이터 환경에서 다양한 애플리케이션, 플랫폼 도구들을 실험할 때 데이터는 항상 필요하다.
실제 운영 환경의 데이터를 활용하면 좋겠지만, 보통은 개발/스테이징/운영의 환경을 나눠놓기 때문에, 데이터도 개발용 데이터가 필요할 때가 있다.
아래 간단하게 yaml 포맷으로 데이터 스키마를 정의하면, 명령어 실행으로 데이터를 출력해주는 간단한 툴을 만들었다.
누구나 가져다 쓸 수 있고, 수정해서 쓸 수 있다.
사실 이미 공개된 오픈 소스 제네레이터는 많지만, 파티셔닝된 데이터출력이라던지 데이터 포맷을 스스로 정의해줘야 하는 특수한 경우를 고려해서 그냥 만들어봤다.
만들어볼 줄 도 알아야 하니까.
1. BigdataSimpleGenerator 소스코드
https://github.com/jaysooo/bigdata-simple-generator
2. 빠른 시작
A.데이터 스키마 정의하기
- 기본적으로 int, string, float( 자리수 포함), 범위, 옵션 리스트 를 정의할 수 있다.
- S3 , 로컬을 지원한다.
- 레코드 개수를 정의할 수 있다.
data_spec:
table_name: stg-event-dummy
records: 1000
file_format: csv # csv, parquet, json
file_prefix: data
destination: /YourPath/sample_data
# destination: s3://yourbucket/event-data/
partition_by:
name: partition_key
range:
min: "2025-01-01"
max: "2025-01-10"
table_schema:
- name: id
type: int
prefix: id_
- name: device_name
type: string
prefix: device_
- name: device_type
type: string
range:
items:
- "iphone"
- "galaxy"
- "xiaomi"
- "huawei"
- name: event_time
type: timestamp
- name: event_type
type: string
- name: event_rate
type: float
range:
min: 0
max: 1
decimal_point: 2
B.실행하기
$ python data-generator.py --config config.yaml --producer pyarrow
3. 출력 데이터
4. 참고
- pyarrow dataframe 으로 데이터를 생산하기 때문에, 데이터량에 따라 머신의 메모리 가용 공간을 확인한다.
- 인터페이스만 구현한다면 데이터 출력 모듈을 직접 구현해서 출력할 수 있다. (pyspark, pandas 등 )
'오픈 소스' 카테고리의 다른 글
GPT 를 이용해서 동영상 쇼츠 제작해보기 (0) | 2025.03.25 |
---|---|
open-webui /ollama 를 이용해 내 컴퓨터에 ChatGPT 구축하기 (0) | 2024.09.20 |
프로메테우스(prometheus) 구성 및 기본 사용법 (0) | 2022.03.27 |
zeppelin 을 이용한 spark 개발 환경 구성 및 사용법 (0) | 2021.09.05 |
아파치 슈퍼셋(superset) 구성 및 기본 사용법 (0) | 2021.08.21 |