본문 바로가기
Database

Parquet 데이터 수정하기

by BTC_최총무 2023. 12. 8.

베하~ 반갑습니다!!

 

인사통의 BTC_김회장, 최총무입니다!!

 

 

오늘은 Parquet 형태 데이터 및 수정방법 대해 간단히 실습 해보겠습니다!

 

다음과 같은 형태로 진행하겠습니다!!

 

개요

  • Parquet 파일이란?
  • Parquet 데이터 수정하기

1. Parquet 파일이란?

Parquet란 데이터 처리 및 분석을 위한 오픈 소스 컬럼 기반 데이터 저장 포맷으로, 대용량 데이터의 저장과 처리에 유용합니다. 주로 하둡 생태계에서 많이 사용됩니다.

 

장점

1. Column 단위 저장방식으로 대용량 파일 Scan에 효율적

열단위 저장 방식을 통해 특정 열에 대한 검색 및 집계 작업을 최적화 하여 전체 데이터를 스캔하지 않아도 된다.

2. 다양한 압축 기법과 인코딩 형태를 지원

상황에 맞는 다양한 압축 기법을 제공해 편리하며, Column 단위로 구성 시 데이터가 균일하여 압축률이 좋다.

3.  다양한 도구들과의 호환성

널리 사용되는 다양한 빅 데이터 처리 도구들과의 호환성이 좋아 데이터 공유 및 처리가 용이하다.

 

단점

1. 데이터 쓰기 작업이 복잡

열기반 저장 방식으로 인해 스트리밍 데이터 등의 쓰기 작업이 비효율적일 수 있다.

2. 일반적인 텍스트 편집기로 열 수 없음

이진 형식으로 저장되어 해석할 수 있는 전문 소프트웨어가 필요

 

해당 Parquet 파일의 특징을 보시게 되면 빅 데이터 환경에서의 읽어들이는데 효율적인 형태라고 할 수 있겠네요!

하지만 데이터를 생성하거나 수정하는데 어려움이 있다고 합니다.

만약 운영환경에서 데이터 error가 발생하여 빅데이터 파이프라인에 에러가 난다면 어떻게 처리해야 할까요?

함께 진행해보시죠!


2. Parquet 데이터 수정하기

저와 함께 Parquet 데이터를 Local에서 수정 실습을 진행해보겠습니다!

우선 Error를 일으킨 Parquet 파일을 local에 준비해주세요~

 

한번 해당 Parquet 파일을 메모장으로 열어보시겠어요?

 

메모장으로 해당 파일을 여니 글자가 전부 깨지는군요!

그러면 Sublime text와 같은 코드 편집기로 열어보겠습니다!!

 

바이너리 인코딩이 되어있어 데이터 확인이 불가능하네요!

그러면 우리는 어떻게 데이터를 쉽게 읽어낼 수 있을까요?

저는 간단히 2가지 방법을 추천합니다!

 

1. python의 pandas 활용

로컬 환경에 python 및 pandas를 설치합니다.

이후 아래 명령어로 데이터 프레임 선언 및 수정할 수 있습니다!

간단한 사례별 명령어를 기재할테니 활용해보세요

# 데이터 프레임 선언하기
import pandas as pd
df = pd.read_parquet('data.parquet')

# 인덱스 5의 행에서 'Age' 컬럼 값을 30으로 변경
df.loc[5, 'Age'] = 30

# 43번째 row drop (원본 DF 직접 수정)
df.drop(43, inplace=True)

# 변경사항을 Parquet 파일로 다시 저장
df.to_parquet('path_to_new_file.parquet')

잘 진행되었나요? 파일을 수정하여 다시 운영 환경에 업로드하여 파이프라인을 다시 가동시켜주면 되겠죠?

만약 쿼리가 편하고 좀더 편하게 데이터를 보고 싶다면 저는 DBeaver 활용을 추천드립니다!

 

2. DBeaver를 활용한 Parquet 데이터 읽기

DBeaver를 사용하면 쿼리 형태로 데이터 수정도 가능합니다!

 

Connect to a database를 눌러 DuckDB를 사용해서 연결해보겠습니다!

로컬 파일을 수정할테니 :memory: 를 통해 연결없이 메모리 내에서 테스트 해보죠!

 

#Parquet 파일 불러오기
select * from read_parquet('C:\Users\User\Downloads\test.parquet')

명령어 수행하면 테이블 형태로 나와서 훨씬 보기 편하죠?

 

읽기 말고 수정이 필요하다면 아래 코드를 사용하여 table copy 후 수정할 수 있습니다.

# Parquet 테이블 복사
Create table {table명} as select * from read_parquet('C:\Users\User\Downloads\test.parquet')

이후 각종 쿼리문을 사용해 데이터를 수정하실 수 있습니다!

 


 

오늘의 실습은 여기까지입니다!!

 

Parquet 형태가 익숙하지 않은 분들은 수정방법을 몰라 헤멜 수 있어요

만약 파이프라인이 고장나서 스케줄링이 꼬인다면 1분 1초가 급박할 수 있습니다!

이런 상황에 평소처럼 메모장이나 코드 에디터로 수정이 안되면 당황할 수 있겠죠? 

 

아마 엔지니어 분이라면 Python이나 DBeaver 중 하나는 사용하고 계실 확률이 크니

잊지말고 대처 하자구요!!

그럼 다음시간에도 유용한 정보를 가지고 돌아오겠습니다!

 

모두 베빠!!

'Database' 카테고리의 다른 글

Python 클라이언트 라이브러리를 사용하여 Cloud Pub/Sub로 메시지 게시  (0) 2023.12.15
Pub/Sub  (0) 2023.12.15
Cloud Spanner  (0) 2023.11.24
Redis란  (0) 2023.11.10
Transactional 애노테이션 상황별 commit, rollback 전략  (0) 2023.10.27

댓글