2017-03-27 1 views
1

큰 (~ 2Gb) yaml 파일이 있습니다. 나는 yaml-cpp 라이브러리와 YAML::Loadfile 함수를 사용합니다. 하지만 RAM 부족 문제가 있습니다.yaml 파일을 여러 파일로 분할하는 방법은 무엇입니까?

작은 파일 하나 하나가 유효한 yaml 파일 (어쩌면 linux의 기능) 일 수있는 방식으로이 파일을 여러 개의 작은 파일로 분할하는 가장 쉬운 방법은 무엇입니까?

+0

이전 질문에 대한 [내 대답] (http://stackoverflow.com/a/42861599/347964) 옵션이 아닙니까? – flyx

+0

@flyx 'HandleNextDocument'를 사용하는 예제를 찾을 수 없었고 다른 방법을 찾기로했습니다. –

답변

1

파일에 여러 개의 문서가있는 경우 회선의 시작 부분에서 ---으로 분할 할 수 있습니다.

여러 문서가 없거나 문서가 너무 많지만 크기가 너무 큰 경우 문서의 최상위 또는 시퀀스에 매핑이 적용됩니다 (이론적으로 다중 문서를 가질 수도 있습니다) 라인 스칼라,하지만 그럴 것 같지 않습니다).

문서의 최상위 스타일이 으로 매핑되고 순서가 [ ] 인 흐름 스타일 인 경우 레이아웃은 레이아웃에 따라 크게 달라집니다. 그러나 블록 스타일을 사용하면 최상위 맵의 개별 키나 시퀀스의 요소를 쉽게 찾을 수 있습니다. 그들은 모두 첫 번째 요소와 동일한 들여 쓰기를 가지고 있습니다.

위의 정보를 기반으로 YAML 문서를 분할하고 각 요소를 자체적으로 처리하십시오.

+0

이 파일을 내 RAM에로드 할 수 없습니다 ('최상위'는 잠시 동안 RAM의 100 % 사용량을 보여줍니다). –

+0

왜 RAM에로드 하시겠습니까? 'head' 또는'grep -e '^ ---''를 사용하여 처음 몇 줄을 보면 여러 개의 문서가 있는지 확인할 수 있습니다. – Anthon

+0

나는 그런 yaml 파일을 가지고있다. https://pastebin.com/J0mTqmWh –

관련 문제