안녕하세요.
json 처리관련하여 질문이 있어서 글을 남기게 되었습니다.
일단 저의 목표는 데이터베이스의 형식으로 json파일을 데이터화 하여
언제든지 원하는 형태로 검색이 가능하게 만드려는 것입니다.
그리하여 json 파싱을 통해 데이터를 처리한 후 쿼리를 날려 입력하려고 했지만,
객채가 나열된 형식이 아닌
{"data":[{"stuff":[
{"onetype":[
{"id":1,"name":"John Doe"},
{"id":2,"name":"Don Joeh"}
]},
{"othertype":[
{"id":2,"company":"ACME"}
]}]
},{"otherstuff":[
{"thing":
[[1,42],[2,2]]
}]
}]}
이런 형식의 (사실 이것보다 훨씬 복잡합니다..) Nested JSON 파일입니다.
객체안에 객체가 형성된 형태에서는 어떤식으로 파싱을 해야하는지 의문이 들어서
같은 문제를 해결하신 분의 경험을 참고해보려고 합니다.
8기가의 json파일(약 320만개의 row값)이다보니 일반적인 방법으로는 읽지를 못합니다.
구글에 검색해보니 jackson, gson의 방법이 있는것으로 보여지나
stream parsing 을 무식하게 모든 object를 선언하여 받는 방법밖에 없는지 고민에 빠졌습니다.
의견주신다면 감사하겠습니다.
- 지금까지 시도해 본 것 -
* json to csv convert를 이용하여 csv자체를 DB에 업로드 해보려고 했지만 변환 용량한계로 포기.
* jackson, gson 라이브러리를 이용하여 파싱한 값을 쿼리날려 DB에 저장해보려고 했지만 너무 복잡한 json구조한계 포기
* json파일을 통째로 mysql 서버에 업로드 하는 방법. (리눅스 원격 서버를 처음 다뤄봐서 미숙하여 연구중)
https://stackoverflow.com/questions/21104592/json-to-pandas-dataframe
이와같이 nested json에서도 유용한지 시도해보겠습니다.
감사해요!
구글님께 여쭤보니.. 아래 링크에 몇가지 방법이 있습니다.
https://www.quora.com/How-do-I-read-a-big-JSON-file-with-Python
pandas와 ijson이 언급되어 있네요.
요즘 나오는 디비들은 json형태로 저장되고 뱉는 db도 꽤 있습니다. 그중에 퍼포먼스 좋은걸로 하나 골라 쓰시는건 어떤가요.
퍼포먼스를 고려하여 선택해보겠습니다. 감사드려요!
전체 로드말고 로딩하면서 파싱을 해주는 모듈을 이용해야겠네요.
말씀해 주신것처럼 로딩하면서 파싱을 해주는 모듈이 jackson, gson으로 알고있습니다.
방법이 하나뿐인지 고민이 들어 질문 드렸습니다.
https://storage.googleapis.com/open-targets-data-releases/19.02/output/19.02_association_data.json.gz
저는 일단 mongoDB에 dump해놓긴 했는데
코딩으로도 가능하시면 방법을 혹시 공유해주실 수 있나요?