> 백엔드 개발 > Golang > golang에서 대용량 파일을 효율적으로 처리하는 방법

golang에서 대용량 파일을 효율적으로 처리하는 방법

藏色散人
풀어 주다: 2021-05-12 11:52:57
앞으로
2337명이 탐색했습니다.

다음 튜토리얼 칼럼에서는 golang에서 대용량 파일을 효율적으로 처리하는 방법을 소개합니다_Pandas를 사용하여 대용량 파일을 덩어리로 처리하는 것이 필요한 친구들에게 도움이 되길 바랍니다! Pandas를 사용하여 대용량 파일을 청크 단위로 처리문제: 오늘 Kuaishou 사용자 데이터를 처리할 때 거의 600M에 달하는 txt 텍스트를 발견했습니다. pandas.read_table()을 사용하여 읽었을 때 충돌이 발생했습니다. 거의 같은 시간이 걸렸고 거의 2분 후에 마침내 열어보니 거의 3천만 행의 데이터가 발견되었습니다. 이제 막 시작하는 단계인데, 처리하기가 얼마나 어려울지 모르겠습니다.

해결책: 문서를 살펴본 결과 파일을 읽는 이러한 유형의 함수에는

chunksize

,

iterator

라는 두 가지 매개변수가 있다는 것을 발견했습니다. 원칙은 파일 데이터를 메모리로 한 번에 읽어들이는 것이 아니라 여러 개로 저장한다는 것입니다. 시간. 1. 청크 크기를 지정하여 파일을 청크로 읽습니다.

read_csv 및 read_table에는 청크 크기(매번 읽을 줄 수)를 지정하고 반복 가능한 TextFileReader 개체를 반환하는 청크 크기 매개 변수가 있습니다.

table=pd.read_table(path+'kuaishou.txt',sep='t',chunksize=1000000)
for df in table:
    对df处理
    #如df.drop(columns=['page','video_id'],axis=1,inplace=True)
    #print(type(df),df.shape)打印看一下信息
로그인 후 복사

여기에서 파일을 다시 분할하고 별도로 처리하기 위해 여러 하위 파일로 나눴습니다. (예, to_csv에도 Chunksize 매개변수가 있습니다.)

2 iterator=True를 지정하세요

iterator=True도 TextFileReader 개체를 반환합니다

reader = pd.read_table('tmp.sv', sep='t', iterator=True)
df=reader.get_chunk(10000)
#通过get_chunk(size),返回一个size行的块
#接着同样可以对df处理
로그인 후 복사

이 측면에 대한 팬더 문서를 살펴보세요.

위 내용은 golang에서 대용량 파일을 효율적으로 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿