대용량의 json 처리하기

파이썬은 json데이터를 처리하기 참 편하다. 그런데 기본 방식으로 json을 처리하려면, 전체 json파일을 모두 읽어들인뒤 데이터 객체를 리턴해준다.

즉, 100MB짜리 json파일을 처리하기 위해서는 100MB를 메모리에 올려야 한다는 의미가 되겠다.

나무위키의 덤프파일을 다운로드하면 대략 7GB의 json으로 된 텍스트 문서를 처리해야하는데, 한방에 읽어서 처리하는것은 바보같은 일이다.

python에서는 이를 처리하는 패키지가 있다. ijson 이라고 하는데, json파일을 읽어들이면서 이벤트처리 방식으로 파싱이 가능하다. 다만, 홈페이지가 없는지 문서가 잘 되어 있지는 않다. 적당히 테스트해본뒤 경험에 의해 코딩하면 될듯하다. 어렵지 않으니…

간단히 아래와 같이 코딩하면 namuwiki의 json파일을 읽으면서 순차적으로 파싱해서 출력해준다.

 

예외

나무위키의 문서를 해당 타이틀의 텍스트 파일로 만들었는데… 예를들어 ‘대한민국.txt’. .txt라는 파일은 만들 수 없다. AUX라는 이름의 파일은 윈도우즈에서 생성할 수 없다.

 

참조

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다