Last active
February 6, 2024 07:41
-
-
Save 6mini/01f62c3edfa6efd4effbf720eaf99f5d to your computer and use it in GitHub Desktop.
Pandas DataFrame을 Parquet 형식으로 변환하여 Amazon S3 버킷에 저장한다. 함수는 DataFrame을 받아 Parquet 형식으로 변환한 후 지정된 S3 경로에 파일을 업로드한다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pandas as pd | |
import boto3 | |
from io import BytesIO | |
import time | |
def save_dataframe_to_parquet_on_s3(s3_bucket_name, df, s3_path): | |
""" | |
Pandas DataFrame을 S3 버킷에 Parquet 파일로 저장한다. | |
주어진 DataFrame을 Parquet 형식으로 변환한 후, 지정된 S3 경로에 저장한다. | |
예상치 못한 업로드 에러 시 10회 재시도한다. | |
Args: | |
s3_bucket_name (str): 저장할 s3 버킷 이름 | |
df (pandas.DataFrame): 저장할 DataFrame. | |
s3_path (str): 저장할 S3 경로 | |
Returns:없음 | |
""" | |
try: | |
s3_client = boto3.client('s3') | |
parquet_buffer = BytesIO() | |
df.to_parquet(parquet_buffer, engine='pyarrow', compression='snappy') | |
parquet_buffer.seek(0) | |
for _ in range(10): | |
try: | |
s3_client.upload_fileobj(parquet_buffer, s3_bucket_name, s3_path) | |
break | |
except: | |
time.sleep(1) | |
except Exception as e: | |
print(f"오류 발생: {e}") | |
# 사용 예제 | |
def example_save_to_s3(): | |
# 간단한 DataFrame 생성 | |
data = { | |
'column1': [1, 2, 3], | |
'column2': ['A', 'B', 'C'] | |
} | |
df = pd.DataFrame(data) | |
# S3 버킷 이름과 파일 경로 설정 | |
s3_bucket_name = 'your-s3-bucket-name' | |
s3_path = 'path/to/yourfile.parquet' | |
# DataFrame을 S3에 저장 | |
save_dataframe_to_parquet_on_s3(s3_bucket_name, df, s3_path) | |
# 예제 함수 실행 | |
example_save_to_s3() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment