Python에서 Parquet을 JSON으로 변환하는 방법
Emily Parker
Product Engineer · Leapcell

Key Takeaways
- Python 라이브러리인 Pandas 및 PyArrow는 Parquet-to-JSON 변환을 간소화합니다.
- 청크 단위 처리는 대용량 Parquet 파일을 효율적으로 처리하는 데 필수적입니다.
- 올바른 엔진(PyArrow, FastParquet 또는 DuckDB)을 선택하는 것은 성능 및 호환성에 영향을 미칩니다.
Parquet은 성능 및 스토리지 효율성을 위해 최적화된 컬럼 방식 스토리지 형식으로, Apache Spark 및 Hadoop과 같은 빅 데이터 처리 프레임워크에서 널리 사용됩니다. 반면 JSON(JavaScript Object Notation)은 경량이며 사람이 읽을 수 있는 형식으로, 데이터 교환에 일반적으로 사용됩니다. Parquet 파일을 JSON으로 변환하는 것은 JSON을 선호하는 시스템과 데이터를 공유하거나 더 쉽게 데이터를 검사할 때 필수적일 수 있습니다.
이 가이드에서는 다양한 시나리오에 적합한 다양한 방법을 사용하여 Python을 통해 이 변환을 수행하는 방법을 보여줍니다.
전제 조건
계속하기 전에 필요한 Python 라이브러리가 설치되어 있는지 확인하십시오. pip를 사용하여 설치할 수 있습니다.
pip install pandas pyarrow fastparquet
pandas
: 데이터 조작 및 분석용.pyarrow
: Apache Arrow에 대한 Python 바인딩을 제공하며 Parquet 파일을 읽는 데 사용됩니다.fastparquet
: 대체 Parquet 읽기 및 쓰기 도구.
방법 1: Pandas 및 PyArrow 사용
이것은 가장 간단한 방법으로, 작거나 중간 크기의 Parquet 파일에 적합합니다.
import pandas as pd # Parquet 파일 읽기 df = pd.read_parquet('data.parquet', engine='pyarrow') # DataFrame을 JSON으로 변환하고 파일에 저장 df.to_json('data.json', orient='records', lines=True)
orient='records'
: JSON 파일의 각 줄은 DataFrame의 행에 해당합니다.lines=True
: JSON 파일을 라인 구분 형식으로 작성합니다. 이는 스트리밍 및 대용량 파일에 유용합니다.
방법 2: 청크 단위로 대용량 파일 처리
메모리에 맞지 않을 수 있는 대용량 Parquet 파일의 경우 데이터를 청크 단위로 처리하는 것이 좋습니다.
import pyarrow.parquet as pq import json # Parquet 파일 열기 parquet_file = pq.ParquetFile('large_data.parquet') # 청크 단위로 처리 및 쓰기 with open('large_data.json', 'w') as json_file: json_file.write('[') # JSON 배열 시작 first_chunk = True for batch in parquet_file.iter_batches(batch_size=10000): df_chunk = batch.to_pandas() json_str = df_chunk.to_json(orient='records') json_str = json_str[1:-1] # 괄호 제거 if not first_chunk: json_file.write(',') else: first_chunk = False json_file.write(json_str) json_file.write(']') # JSON 배열 종료
이 접근 방식은 Parquet 파일을 배치 단위로 읽고 각 배치를 JSON으로 변환하여 출력 파일에 점진적으로 작성하므로 메모리 사용량을 효율적으로 관리합니다.
방법 3: 특정 열 변환
Parquet 파일에서 특정 열만 필요한 경우 읽기 작업 중에 지정할 수 있습니다.
import pandas as pd # Parquet 파일에서 특정 열 읽기 df = pd.read_parquet('data.parquet', columns=['column1', 'column2']) # JSON으로 변환 df.to_json('selected_columns.json', orient='records', lines=True)
이 메서드는 필요한 데이터만 로드하여 메모리 사용량과 처리 시간을 줄입니다.
방법 4: FastParquet 사용
fastparquet
는 Parquet 파일을 읽기 위한 pyarrow
의 대안이며 특정 시나리오에서 성능 이점을 제공할 수 있습니다.
import pandas as pd # fastparquet을 사용하여 Parquet 파일 읽기 df = pd.read_parquet('data.parquet', engine='fastparquet') # JSON으로 변환 df.to_json('data_fastparquet.json', orient='records', lines=True)
성능 및 호환성 요구 사항에 가장 적합한 엔진을 선택하십시오.
방법 5: DuckDB 사용
DuckDB는 Parquet 파일을 효율적으로 처리할 수 있는 인프로세스 SQL OLAP 데이터베이스 관리 시스템입니다.
import duckdb # DuckDB를 사용하여 Parquet을 JSON으로 변환 duckdb.sql(""" COPY (SELECT * FROM 'data.parquet') TO 'data.json' (FORMAT 'json') """)
이 방법은 변환 프로세스 중에 복잡한 쿼리 및 변환에 특히 유용합니다.
팁 및 모범 사례
- 중첩된 데이터 처리: Parquet 파일에는 중첩된 데이터 구조가 포함될 수 있습니다. JSON 출력이 원하는 구조를 유지하는지 확인하십시오. 중첩된 필드를 적절하게 처리해야 할 수도 있습니다.
- 데이터 유형: Parquet과 JSON 간의 데이터 유형 변환에 유의하십시오. 일부 유형은 직접적인 상응물이 없을 수 있으며 사용자 지정 처리가 필요할 수 있습니다.
- 성능: 매우 큰 데이터 세트의 경우 메모리 문제를 방지하기 위해 청크 단위 처리 또는 빅 데이터에 최적화된 도구를 사용하는 것이 좋습니다.
결론
Python에서 Parquet 파일을 JSON으로 변환하는 것은 다양한 방법을 통해 달성할 수 있으며 각 방법은 다양한 시나리오 및 요구 사항에 적합합니다. 작은 파일이든 큰 데이터 세트이든 Python의 풍부한 에코시스템은 효율적이고 효과적인 데이터 변환에 필요한 도구를 제공합니다.
파일 크기, 성능 및 데이터 복잡성과 같은 요소를 고려하여 특정 요구 사항에 맞는 방법을 선택하십시오.
FAQs
Pandas와 PyArrow, 그리고 to_json()
을 사용하여 빠르게 변환하십시오.
Parquet 파일을 배치 단위로 읽고 처리하여 메모리 사용량을 관리하십시오.
예, Pandas의 columns
매개변수를 사용하여 필요한 열만 로드하십시오.
Leapcell은 백엔드 프로젝트 호스팅을 위한 최고의 선택입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무료로 무제한 프로젝트 배포
- 사용량에 대해서만 지불하십시오. 요청도 없고 요금도 없습니다.
뛰어난 비용 효율성
- 유휴 요금 없이 사용한 만큼만 지불하십시오.
- 예: $25로 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 손쉬운 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 높은 동시성을 쉽게 처리할 수 있도록 자동 확장됩니다.
- 운영 오버헤드가 없으므로 구축에만 집중하십시오.
설명서에서 더 자세히 알아보십시오!
X에서 팔로우하세요: @LeapcellHQ