본문 바로가기

파일 형식 백과사전

Parquet 파일 받았는데 더블클릭해도 안 열립니다, 파이썬과 비전공자용 방법까지

데이터 분석을 하는 동료에게 자료를 받았더니 확장자가 .parquet인 파일이 와 있습니다. 평소처럼 더블클릭했는데 열리는 프로그램이 없거나, 메모장으로 억지로 열면 깨진 기호만 잔뜩 나옵니다.

파일이 망가진 것이 아닙니다. Parquet는 사람이 눈으로 읽으라고 만든 형식이 아니라, 프로그램이 빠르게 읽도록 압축해 둔 데이터 파일입니다. 그래서 여는 방법이 따로 있습니다. 코드로 여는 법과, 코딩을 모르는 분을 위한 방법을 차례로 보여 드리겠습니다.

 

왜 메모장으로는 안 보일까

먼저 이 점부터 짚고 가면 나머지가 쉬워집니다. CSV는 글자를 그대로 적어 둔 텍스트 파일이라 메모장으로도 읽힙니다. Parquet는 다릅니다. 값을 열(컬럼) 단위로 모아 압축하고, 맨 앞과 맨 뒤에 표식을 붙인 바이너리(이진) 형식입니다.

실제로 파일의 첫 4바이트와 끝 4바이트를 꺼내 보면 똑같이 PAR1이라는 표식이 박혀 있습니다. 이 표식 사이에 압축된 데이터가 들어 있어서, 텍스트로 풀어 읽으면 깨진 글자처럼 보이는 것입니다.

파일 맨 앞 4바이트 : b'PAR1'
파일 맨 뒤 4바이트 : b'PAR1'

파이썬으로 여는 법 (가장 확실)

데이터 작업에서 가장 많이 쓰는 방법은 파이썬의 pandas 라이브러리입니다. 아래 측정과 코드는 모두 윈도우 11, 파이썬 3.14.3, pandas 3.0.1, pyarrow 24.0.0 환경에서 실제로 돌린 결과입니다. 버전에 따라 출력 형태가 조금 다를 수 있습니다.

아래 코드는 설명용 샘플 Parquet을 하나 만든 뒤, 그것을 다시 읽어 앞부분과 모양을 출력합니다.

import pandas as pd

# 1) 설명용 샘플 만들기 (이미 파일이 있으면 이 줄은 건너뜁니다)
df = pd.DataFrame({
    "id":   [1, 2, 3, 4, 5],
    "name": ["김민수", "이서연", "박지훈", "최하은", "정도윤"],
    "age":  [29, 34, 41, 23, 52],
    "city": ["서울", "부산", "대구", "인천", "광주"],
})
df.to_parquet("members.parquet", index=False)

# 2) Parquet 파일 열기
got = pd.read_parquet("members.parquet")
print(got.head())   # 앞 5행
print(got.shape)    # (행 수, 열 수)
print(got.dtypes)   # 컬럼별 자료형

핵심은 read_parquet 한 줄입니다. 실제로 실행했더니 다음과 같이 나왔습니다.

   id name  age city
0   1  김민수   29   서울
1   2  이서연   34   부산
2   3  박지훈   41   대구
3   4  최하은   23   인천
4   5  정도윤   52   광주

(5, 4)

id      int64
name      str
age     int64
city      str
dtype: object

받은 파일을 열고 싶다면 members.parquet 자리에 그 파일 이름만 바꿔 넣으면 됩니다. 읽고 싶은 부분만 보려면 head() 안에 숫자를 넣어 head(20)처럼 행 수를 정할 수 있습니다. 표가 크면 전체를 출력하지 말고 이렇게 일부만 확인하는 편이 빠릅니다.

열어 보기 전에 구조만 살피고 싶다면

용량이 큰 Parquet은 통째로 읽기 전에 어떤 컬럼이 몇 행 들어 있는지부터 보고 싶을 때가 있습니다. 이때는 pyarrow로 데이터 본문 대신 메타데이터(파일이 자기 자신을 설명하는 정보)만 가볍게 읽을 수 있습니다.

import pyarrow.parquet as pq

pf = pq.ParquetFile("members.parquet")
print(pf.num_row_groups)   # 데이터 묶음(행 그룹) 개수
print(pf.schema)           # 컬럼 이름과 자료형
print(pf.metadata)         # 행 수, 생성 도구 등 요약

같은 파일로 실제 실행한 출력입니다.

1

<pyarrow._parquet.ParquetSchema>
required group field_id=-1 schema {
  optional int64  field_id=-1 id;
  optional binary field_id=-1 name (String);
  optional int64  field_id=-1 age;
  optional binary field_id=-1 city (String);
}

created_by: parquet-cpp-arrow version 24.0.0
num_columns: 4
num_rows: 5
num_row_groups: 1
format_version: 2.6

행 그룹(row group)은 Parquet이 데이터를 나눠 담는 묶음 단위입니다. 큰 파일은 이 묶음이 여러 개라 필요한 부분만 골라 읽을 수 있습니다. 위 샘플은 5행이라 묶음이 1개로 나왔습니다.


코딩 없이 표로 보고 싶다면

파이썬을 설치하기 부담스러운 분도 있습니다. Parquet을 표 형태로 띄워 주는 방법은 코드 말고도 있습니다. 상황별로 정리하면 이렇습니다.

이럴 때 방법
코드 작성에 익숙하다 pandas read_parquet (위 방법)
가끔 내용만 표로 확인 Parquet 미리보기를 지원하는 무료 데스크톱 뷰어
코드 편집기를 이미 쓴다 VS Code 등에 Parquet 미리보기 확장 설치
엑셀에서 다뤄야 한다 먼저 CSV로 변환한 뒤 엑셀로 열기

무료 뷰어나 편집기 확장은 종류가 여럿이고 지원 범위가 제각각이라, 특정 제품을 콕 집어 권하기보다 "Parquet viewer" 또는 "Parquet 미리보기"로 검색해 평이 좋은 것을 고르시길 권합니다. 도구에 따라 큰 파일은 일부만 보여 주거나 열리지 않을 수 있습니다.

엑셀만 쓴다면 Parquet을 직접 열기보다, 위 파이썬 코드 끝에 got.to_csv("members.csv", index=False, encoding="utf-8-sig") 한 줄을 더해 CSV로 바꿔 여는 편이 안전합니다. 한글이 깨지지 않게 인코딩을 utf-8-sig로 두는 것이 요령입니다.

자주 묻는 질문

Q. Parquet을 더블클릭하면 여는 기본 프로그램이 왜 없나요?
사람이 직접 읽는 문서가 아니라 프로그램이 읽는 데이터 파일이라, 운영체제에 기본 연결 프로그램이 지정돼 있지 않습니다. 위 방법 중 하나로 열면 됩니다.

Q. 메모장으로 연 깨진 화면을 그대로 저장하면 파일이 망가지나요?
그렇습니다. 바이너리 파일을 텍스트로 저장하면 표식과 압축 구조가 어긋날 수 있으니, 메모장으로는 저장하지 말고 닫으세요.

Q. read_parquet에서 오류가 납니다.
pandas만 설치하고 Parquet을 읽는 엔진이 없을 때 자주 납니다. 명령창에서 pip install pyarrow로 엔진을 설치하면 대부분 해결됩니다.

 

받은 Parquet을 가장 확실히 여는 방법은 파이썬에서 pandas.read_parquet 한 줄이고, 코드를 안 쓴다면 무료 Parquet 뷰어로 표만 확인하면 됩니다.