대용량 JSON 파일 형식 변환

대용량 JSON 파일 형식 변환

다음 형식으로 변환이 가능한지 알고 싶습니다.

{"timestamp":"1579053433","name":"1.10.207.64","value":"node-fnk.pool-1-10.dynamic.totinternet.net","type":"ptr"}
{"timestamp":"1579067130","name":"1.10.207.65","value":"node-fnl.pool-1-10.dynamic.totinternet.net","type":"ptr"}
{"timestamp":"1579098581","name":"1.10.207.66","value":"node-fnm.pool-1-10.dynamic.totinternet.net","type":"ptr"}

그리고 마침내 얻는다

1.10.207.64-1.10.207.64::node-fnk.pool-1-10.dynamic.totinternet.net;
1.10.207.65-1.10.207.65::node-fnl.pool-1-10.dynamic.totinternet.net;
1.10.207.66-1.10.207.66::node-fnm.pool-1-10.dynamic.totinternet.net;

JSON 파일 크기는 127GB, 행 1,267,984,961개입니다. 각 줄에서 변경되는 유일한 사항은 IP와 호스트 이름입니다.

답변1

시도해 볼 수 있습니다 jq. 예를 들어 \(...)문자열 보간을 사용하여

jq -r '"\(.name)-\(.name)::\(.value);"' file.json

내가 아는 한, 명시적으로 지시하지 않는 한( -s/ --slurp옵션을 사용하여) 전체 파일을 읽으려고 시도하지 않습니다.느린, 파일 크기에 관계없이 차단되어서는 안됩니다.

답변2

ctrl-alt-delor에서 와 같이논평, python옵션입니다

예를 들어 비교적 새로운 python3버전을 사용하면

import sys, json

for line in sys.stdin:
    doc = json.loads(line)
    print(f'{doc["name"]}-{doc["name"]}::{doc["value"]}')

이를 파일(예 parse_json.py: )에 넣고 다음과 같이 실행할 수 있습니다.

python3 parse_json.py <json.file

관련 정보