큰 데이터 세트의 RAM 문제를 피하기 위해 Python 3.4에서 DASK 패키지를 사용하려고하는데 문제가 있음을 알았습니다.DASK와 from_pandas 함수의 RAM 문제
기본 기능 "read_csv"를 사용하면 150MB 미만의 RAM을 사용하여 dask 데이터 프레임에 큰 데이터 세트를로드합니다.
PANDAS DB 연결 (제한 및 오프셋 옵션 사용) 및 dunge fuction "from_pandas"를 사용하여 읽은 동일한 데이터 세트는 내 RAM을 500/750MB로 채 웁니다.
왜 이런 일이 생길지 모르겠지만이 문제를 해결하고 싶습니다. 여기
코드 :
def read_sql(schema,tab,cond):
sql_count="""Select count(*) from """+schema+"""."""+tab
if (len(cond)>0):
sql_count+=""" where """+cond
a=pd.read_sql_query(sql_count,conn)
num_record=a['count'][0]
volte=num_record//10000
print(num_record)
if(num_record%10000>0):
volte=volte+1
sql_base="""Select * from """+schema+"""."""+tab
if (len(cond)>0):
sql_base+=""" where """+cond
sql_base+=""" limit 10000"""
base=pd.read_sql_query(sql_base,conn)
dataDask=dd.from_pandas(base, npartitions=None, chunksize=1000000)
for i in range(1,volte):
if(i%100==0):
print(i)
sql_query="""Select * from """+schema+"""."""+tab
if (len(cond)>0):
sql_query+=""" where """+cond
sql_query+=""" limit 10000 offset """+str(i*10000)
a=pd.read_sql_query(sql_query,conn)
b=dd.from_pandas(a , npartitions=None, chunksize=1000000)
divisions = list(b.divisions)
b.divisions = (None,)*len(divisions)
dataDask=dataDask.append(b)
return dataDask
a=read_sql('schema','tabella','data>\'2016-06-20\'')
뉴스를 기다리는 도움 나
주셔서 감사합니다
고맙습니다. 가능한 한 빨리이 방법을 시도해보고 응답 해 드리겠습니다. –