대용량 json 파일을 csv로 스트리밍

응우옌 호앙 부

다음과 같은 개체 목록이 포함된 큰 JSON 파일이 있습니다.

{
   "_index":"pelias",
   "_type":"address",
   "_id":"jf808cdawi46z",
   "_score":1,
   "_source":{
      "center_point":{
         "lon":106.66307,
         "lat":10.959882
      },
      "name":{
         "default":"375/20 Bùi Quốc Khánh, Chánh Nghĩa, Bình Dương, Việt Nam"
      }
   }
}
{
   "_index":"pelias",
   "_type":"address",
   "_id":"jf808cdawi46z",
   "_score":1,
   "_source":{
      "center_point":{
         "lon":106.66307,
         "lat":10.959882
      },
      "name":{
         "default":"375/20 Bùi Quốc Khánh, Chánh Nghĩa, Bình Dương, Việt Nam"
      }
   }
}

jq를 사용하여 다음과 같이 csv로 변환하고 있습니다.

"address","lat","lon"
"375/20 Bùi Quốc Khánh, Chánh Nghĩa, Bình Dương, Việt Nam",10.959882,106.66307
"375/20 Bùi Quốc Khánh, Chánh Nghĩa, Bình Dương, Việt Nam",10.959882,106.66307

이 코드를 사용하고 있습니다.

cat pelias_minify.json | jq -r -s '. | [.[]  | {lat: ._source.center_point.lat, lon: ._source.center_point.lon, address: ._source.name.default}] | (map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv' > pes.csv

문제는 이 파일의 크기가 최대 2GB를 넘었다는 것입니다. 스트리밍을 적용하기 위해 공부하고 있지만 여전히 사용법을 이해하지 못합니다. 도움이 필요하세요? 감사합니다.

업데이트, 이 코드를 시도했고 파일 출력을 스트리밍할 수 있습니다.

cat pelias_minify.json | jq -cn --stream 'fromstream(0|truncate_stream(inputs)) | {lat: ._source.center_point.lat, lon: ._source.center_point.lon, address: ._source.name.default}'

출력:

{"center_point":{"lon":106.66307,"lat":10.959882},"name":{"default":"375/20 Bùi Quốc Khánh, Chánh Nghĩa, Bình Dương, Việt Nam"}}
{"center_point":{"lon":106.66307,"lat":10.959882},"name":{"default":"375/20 Bùi Quốc Khánh, Chánh Nghĩa, Bình Dương, Việt Nam"}}
이니안

피크에서 알 수 있듯이 출력에서 ​​스트리밍 파서를 jq호출할 필요가 없습니다 . CSV 출력에 필요한 필드만 효율적으로 필터링할 수 있다면 괜찮을 것입니다. 즉,

jq -r -cn '["address","lat","lon"], (inputs | [._source.name.default,._source.center_point.lat,._source.center_point.lon]) | @csv'

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

URL의 대용량 파일을 gzip 파일로 직접 스트리밍

대용량 파일을 데이터베이스 BLOB 필드로 스트리밍

urllib2를 사용하여 대용량 바이너리 파일을 파일로 스트리밍

압축 된 대용량 파일에서 JSON 객체 스트리밍

Python-대용량 CSV 파일을 JSON으로 변환

SpringBoot : Apache Commons FileUpload를 사용한 대용량 스트리밍 파일 업로드

StreamingHttpResponse를 사용하여 대용량 CSV 파일 스트리밍 및 다운로드

Play 프레임 워크 및 타사 API로 대용량 파일 스트리밍

yield를 사용하여 JSON 파일로 스트리밍

대용량 CSV 파일 처리를 처리하거나 대용량 CSV 파일을 청크로 읽는 방법

메모리에 대용량 파일을 생성하고 객체 저장소로 스트리밍

Python Pycharm : 대용량 JSON 파일을로드 할 때 메모리 부족

Python, 대용량 텍스트 파일을 병렬로 처리

Delphi : 대용량 파일 (100MB)을 위해 sha256으로 고속 스트리밍

여러 개의 대용량 파일을 부두로 스트리밍하는 방법

Symfony2에서 대용량 파일을 다운로드 (스트리밍)하는 방법

S3에서 Laravel보기로 대용량 파일을 스트리밍하는 방법

자바 스크립트로 대용량 파일 클라이언트 측 스트리밍

Node js CSV에서 JSON으로 (대용량 파일)

MarkLogic 8-대용량 결과 세트를 파일로 스트리밍-JavaScript-Node.js 클라이언트 API

대용량 CSV 파일에 대한 대량 쿼리

CSV에 대용량 텍스트 파일, 텍스트 파일을 열 수 없음

대용량 CSV 파일 처리

대용량 CSV 파일 폴더 처리

http 서비스에서 대용량 파일 스트리밍

대용량 텍스트 파일을 효율적으로 읽기

Dask로 대용량 압축 CSV 파일 처리

csv 파일의 내용을 기반으로 JSON / 텍스트 파일 만들기

자바 서블릿에서 대용량 파일 스트리밍