Skip to main content

2 posts tagged with "data"

View All Tags

Your Jenkins data directory /var/lib/jenkins (AKA JENKINS_HOME) is almost full. You should act on it before it gets completely full.

· One min read

image

갑자기 jenkins 가 빌드가 안된다.

뭔가 가득 찼다는 말 같아, 빌드 서버에 접속해 확인을 해보니(우분투 서버)

df -h 를 입력해 용량을 확인하면 용량이 100% 차 있는 곳이 많이 있다.

build 서버에서 용량이 자꾸 늘어날 이유가 무엇일까 생각 중 로컬 랩탑에서 docker 빌드하면 남는 큰 용량의 dangling image들이 생각났다. 내 랩탑은 매번 disk에서 지워주지만 서버는 신경을 못 썼다...

그래서 확인해 해 봤다! docker image ls

image

끝을 모르고 쌓여 있는 이미지들...
docker rmi $(docker images -f "dangling=true" -q)
를 입력해 모두 제거했다.

image

눈 앞에서 마구 삭제하니 불안한 마음이 생기지만 실행중인 컨테이너도 아니고 이미지니까 괜찮겠지 하며 기다려 본다...

완료 후 확인해 보니 아래와 같이 용량이 확보됐고 빌드가 정상 실행됐다.

pd.read_csv(), pd.to_csv() -> Modin 👍

· 2 min read

image

머신러닝을 활용하거나 빅데이터를 다루거나 작은 크롤링 작업을 하다 보면 csv 파일을 많이 이용하게 되는데 이 때 pandas 를 사용하게 되면 pd.read_csv() / pd.to_csv() 명령을 자주 사용하게 된다.

하지만 데이터 사이즈가 커질수록 그 성능 문제가 생기고 많은 시간이 소요되는 등 불편한 점들이 점점 발생한다.

그 한계를 극복하기 위해 분산컴퓨팅 기능을 제공하는 보다 효율적인 새로운 대안을 찾아보게 됐다.

read_csv() 의 경우

import pandas as pd
import dask.dataframe as dd

# Reading a large CSV file with pandas
df_pandas = pd.read_csv('large_dataset.csv')
# Reading the same file with dask
df_dask = dd.read_csv('large_dataset.csv')
# Timing the execution
%timeit df_pandas.head()
%timeit df_dask.head()

위에는 dask를 활용한 예시인데 데이터 사이즈가 클수록 더 많은 시간을 줄일 수 있다. 

to_csv() 의 경우

import pandas as pd
import fastparquet

# Saving a DataFrame to a Parquet file
df = pd.DataFrame({'column1': [1, 2, 3], 'column2': ['a', 'b', 'c']})
fastparquet.write('output.parquet', df)

위와 같이 fastparquet을 활용해 공간 및 성능 효율적으로 실행할 수 있다.

설명한 것처럼 여러가지 방법들이 많지만 Modin에 대해 알아보게 됐습니다!

Modin으로 csv를 읽어오는 법

import modin.pandas as pd

# Reading a CSV file with Modin
df = pd.read_csv('data.csv')

단순히 pandas 를 위와 같이 대체만 해줘도 되는 쉬운 방식으로 성능적이 이득을 얻을 수 있다.

Modin으로 csv를 쓰는 법

import modin.pandas as pd

# Create a sample DataFrame
df = pd.DataFrame({'column1': [1, 2, 3], 'column2': ['a', 'b', 'c']})
# Writing the DataFrame to a CSV file with Modin
df.to_csv('output.csv', index=False)

파일을 쓰는 법도 읽어오는 것처럼 대체만 해주면 바로 사용이 가능하고 훨씬 빠르고 효율적으로 저장할 수 있다.

이처럼 많은 대체 방법 중 Modin을 소개하는 것은 modin.pandas만 해주면 코드를 수정하지 않아도 이용할 수 있기 때문이다.

만약 pandas 만의 고유 기능이 있어 다시 pandas 를 사용하고 싶다면 아래와 같이 간단히 switching 할 수 있다.

import modin.pandas as pd

# Reading a CSV file with Modin
df = pd.read_csv('data.csv')
# Perform some data analysis with Modin
# Switch to pandas
df = df.__pandas__()
# Continue working with pandas
df.head()

결론

라이브러리들은 계속 발전하고 여러가지 대체 방법들은 계속 나오고 있으니 pandas 로 막힌다면 다른 방법들을 찾아 스터디해 보는 것도 좋을 것 같다.