클라우드 저장소에서 대용량 파일 읽기 및 데이터 저장소에 쓰기

user2302244

클라우드 스토리지의 버킷에서 트리거되는이 클라우드 기능이 있습니다. 파일을 읽고 N3을 사용하여 각 줄을 rdf 트리플로 변환 한 다음 결과 트리플을 클라우드 스토리지에 씁니다.

전체 파일을 메모리에 다운로드하기 때문에 대용량 파일에는 적합하지 않습니다. 이 기능을 한 번에 한 줄씩 변경하려면 어떻게해야합니까?

const storage = require('@google-cloud/storage')();
const Datastore = require('@google-cloud/datastore');
const N3 = require('n3');

helloGCS = (event, callback) => {
    const file = event.data;

    if (file.resourceState === 'not_exists') {
      console.log(`File ${file.name} deleted.`);
      callback(null, 'ok');
    } else if (file.metageneration === '1') {
      // metageneration attribute is updated on metadata changes.
      // on create value is 1
      console.log(`File ${file.name} uploaded.`);
      let parser = N3.Parser();
      const bucket = storage.bucket('woburn-advisory-ttl');
      const remoteFile = bucket.file(file.name);
      const datastore = new Datastore({});
      let number_of_rows = 0;
      remoteFile.download()
          .then(data => {   // convert buffer to string
              if (data) {
                  lines = data.toString().split('\n')
                  console.log(lines.length)
                  entities = lines.map(line=>{
                      let triple = parser.parse(line)[0];
                      if (triple) {
//                          console.log(triple)
                          const tripleKey = datastore.key('triple');
                          let entity = {
                              key: tripleKey,
                              data: [
                                  {
                                      name: 'subject',
                                      value: triple.subject
                                  },
                                  {
                                      name: 'predicate',
                                      value: triple.predicate
                                  },
                                  {
                                      name: 'object',
                                      value: triple.object
                                  }
                              ]
                          }
                          return entity
                      }
                      else {
                          return false
                  }})
                  entities = entities.filter((entity)=>{return entity})
                  console.log(entities.length)
                  datastore.save(entities)
                  .then((response)=>{
                      console.log(`Triples created successfully. but... ${response}`);
                      res.send(`${entities.length} triples created`)
                  })
              }
              callback(null, 'ok');
          })
    }
     else {
        console.log(`File ${file.name} metadata updated.`);
        callback(null, 'ok');
    }
};
데이비드

download()use 를 호출 하는 대신 createReadStream(). 이를 통해 메모리에 저장하지 않고 전체 파일을 반복 할 수 있습니다. byline 또는 readline 과 같은 것을 사용 하여 해당 스트림에서 개별 행을 가져올 수 있습니다 .

전반적으로 이것은 다음과 같이 보일 것입니다.

gcsStream = remoteFile.createReadStream();
lineStream = byline.createStream(gcsStream);
lineStream.on('data', function(line) {
   let triple = parser.parse(line)[0];
   //...
});

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Dask를 사용하여 Google 클라우드 저장소에서 쪽모이 세공 파일 읽기

대용량 텍스트 파일 읽기 및 데이터 저장-Javascript

Python : 대용량 파일 읽기-저장-작업-쓰기 프로그램에서 RAM 사용량 줄이기

외부 파일에서 vuex 저장소로 데이터 읽기

Google 클라우드 데이터 흐름을 사용하여 한 데이터 저장소에서 데이터를 읽고 다른 데이터 저장소에 쓰기

클라우드 기능: 저장소에서 파일 삭제

Python 저장 목록 및 파일에서 데이터 읽기

조각 내의 내부 저장소에서 파일 읽기 및 쓰기

영구 저장소로 파일에 데이터 쓰기, 신속

txt 파일에서 데이터 읽기 및 데이터 프레임에 저장

노드 : 데이터 읽기, 변환 및 스트림 및 파이프를 사용하여 파일에 쓰기

다운로드 / 복제없이 대용량 github 파일을 기존 저장소에 복사

C에서 파일에서 데이터 읽기 및 목록에 저장

파이썬 변수에서 XML 데이터 읽기 및 저장

Haskell용 게임에서 추상 데이터 유형을 json 파일에 저장 및 로드하고 파일에서 읽기

저장소에서 txt 파일 읽기

로컬 저장소에서 원격 이동 : Git 및 대용량 파일 삭제

자바의 Google 클라우드 저장소에서 파일 일부 읽기 / 다운로드

파일 스트림 및 Firebase 클라우드 기능 + 클라우드 저장소로 파일 업로드

Android : 외부 저장소에서 파일 쓰기 / 읽기 문제

중첩 된 사전에서 csv 파일 저장소 데이터 읽기

Git 저장소 기록에서 대용량 파일 찾기 실패

Visual Studio Code에서 C++를 사용하여 csv 파일 읽기 및 배열에 데이터 저장

모듈 클래스에서 데이터 저장 및 읽기

XML 파일에서 데이터 쓰기 및 읽기

.txt 파일에서 데이터 읽기, 계산 및 쓰기

idl에서 여러 데이터 파일 읽기 및 쓰기

csv 파일에서 데이터 읽기, 편집 및 쓰기

Firebase 저장소에서 파일 값 / 내용 읽기

TOP 리스트

  1. 1

    Ionic 2 로더가 적시에 표시되지 않음

  2. 2

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  3. 3

    std :: regex의 일관성없는 동작

  4. 4

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  5. 5

    java.lang.UnsatisfiedLinkError : 지정된 모듈을 찾을 수 없습니다

  6. 6

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  7. 7

    상황에 맞는 메뉴 색상

  8. 8

    SMTPException : 전송 연결에서 데이터를 읽을 수 없음 : net_io_connectionclosed

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    Windows cmd를 통해 Anaconda 환경에서 Python 스크립트 실행

  11. 11

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  12. 12

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  13. 13

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  14. 14

    Cassandra에서 버전이 지정된 계층의 효율적인 모델링

  15. 15

    복사 / 붙여 넣기 비활성화

  16. 16

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  17. 17

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  18. 18

    SQL Server-현명한 데이터 문제 받기

  19. 19

    Seaborn에서 축 제목 숨기기

  20. 20

    ArrayBufferLike의 typescript 정의의 깊은 의미

  21. 21

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

뜨겁다태그

보관