Programming/Python

[Python] 데이터 포맷 변환 - Protocol Buffer를 Json으로 변환

쌍쌍바나나 2016. 8. 3. 22:00
반응형

들어가며

  데이터 포맷은 참... 다양합니다. json부터 시작해서 csv, protocol buffer, text 등등.. 이번에는 protocol buffer를 json의 형태로 변환하는 방법에 대해서 알아보려고 합니다. 왜 필요하느냐.. 저 같은 경우에는 spark에서 데이터를 처리하기 위해서 변환을 했습니다. 사실 스파크에서는 protocol buffer를 지원하기 때문에 그대로 읽으면 되지만, tweeter에서 제공하는 elephant-bird 라이브러리를 함께 사용해야 하는 복잡함이 있다.  그것보다 아직 protocol buffer를 읽어서 spark에서 처리한 내용이 거의 없었다. 내가 찾아봤을때는 elephant-bird와 scala를 이용해서 읽어보려고 했으나 많은 dependency 등과 그 외의 문제가 엄청 많았다. 많은 커뮤니티에서 다루고 있는 문제라면 쉽게 해결을 할 수 있겠지만, 그래서 일단 숙제로 남겨두고 급한대로 protocol buffer를 json으로 변환한 뒤에 스파크에서 처리하자라는 생각으로 작전을 변경했다. 일단 처리는 해야하니까 말이다. 다음에는 꼭 해결하리.

라이브러리 설치

protobuf를 dict의 형태로 변환을 해주는 라이브러리가 존재해서 사용을 하였다. [바로가기]

sudo pip install protobuf-to-dict

소스코드

소스코드는 총 3단계로 이루어져 있습니다. 

  1. 첫번째는 내가 정의한 protocol buffer의 파일을 읽기
  2. 읽어드린 파일을 protobuf_to_dict을 이용해 dict의 형태로 변환을 하고, dict의 데이터를 json으로 변경
  3. json_string의 값을 파일에 저장


반응형