텍스트 파일

Dataflow SDK에는 ReadWrite 텍스트 파일 변환이 기본 제공됩니다. 이 변환 기능은 읽거나 쓸 텍스트 파일이 줄바꿈으로 구분되어 있다고 가정합니다. 즉, 파일의 각 '레코드'를 줄바꿈 문자로 끝나는 텍스트 한 줄로 인식합니다.

로컬 파일(Dataflow 프로그램이 실행되는 시스템의 파일) 및 Google Cloud Storage의 원격 파일을 읽거나 쓸 수 있습니다.

자바

참고: 파이프라인에서 로컬 파일을 읽거나 쓰려면 DirectPipelineRunner를 사용하여 로컬에서 파이프라인을 실행해야 합니다. 이는 Dataflow 서비스가 파이프라인을 실행하는 데 사용하는 Google Compute Engine 인스턴스가 읽기 및 쓰기를 위해 로컬 머신의 파일에 액세스할 수 없기 때문입니다.

텍스트 파일에서 읽기

자바

텍스트 파일에서 읽으려면 TextIO.ReadPipeline 객체에 적용합니다. TextIO.Read는 텍스트 파일을 읽고 PCollection<String>을 반환합니다. 결과 PCollection의 각 String은 텍스트 파일의 한 행을 나타냅니다.

      PipelineOptions options = PipelineOptionsFactory.create();
      Pipeline p = Pipeline.create(options);

      PCollection<String> lines = p.apply(
        TextIO.Read.named("ReadMyFile").from("gs://some/inputData.txt"));
    

이 예에서 이 코드는 Pipeline 객체에 apply를 호출하고 Read 변환으로 TextIO.Read를 전달합니다. .named 작업은 읽기 작업의 변환 이름을 제공하고 .from 작업은 파일 경로를 제공합니다. apply의 반환 값은 lines이라는 결과 PCollection<String>입니다.

다른 파일 기반 Dataflow 소스와 마찬가지로, TextIO.Read 변환은 입력 파일을 여러 개 읽을 수 있습니다. 파일 기반 소스를 읽을 때 여러 파일을 처리하는 방법에 대한 자세한 내용은 입력 데이터 읽기를 참조하세요.

텍스트 파일에 쓰기

자바

데이터를 텍스트 파일로 출력하려면 출력하고자 하는 PCollectionTextIO.Write를 입력합니다. TextIO.Write 사용 시 다음을 유의하세요.

  • TextIO.WritePCollection<String>에 적용할 수 있습니다. TextIO.Write로 작성하기 전에 간단한 ParDo를 사용하여 데이터 형식을 중간 PCollection에서 PCollection<String>으로 지정해야 할 수 있습니다.
  • 출력 PCollection의 각 요소는 결과 텍스트 파일의 한 줄을 나타냅니다.
  • TextIO.Write와 같은 Dataflow 파일 기반 쓰기 작업은 기본적으로 여러 출력 파일에 씁니다. 자세한 내용은 출력 데이터 쓰기를 참조하세요.
      PCollection<String> filteredWords = ...;
      filteredWords.apply(TextIO.Write.named("WriteMyFile")
                                      .to("gs://some/outputData"));
    

이 예에서 코드는 출력에 PCollectionapply를 호출하고 Write 변환으로 TextIO.Write를 전달합니다. .named 작업은 쓰기 작업의 변환 이름을 제공하고 .to 작업은 결과 출력 파일의 경로를 제공합니다.

압축된 텍스트 파일에서 읽기

자바

압축된 텍스트 파일, 즉 gzipbzip2 압축된 파일로 TextIO.Read 변환을 사용할 수 있습니다. 압축 파일을 읽으려면 압축 유형을 지정해야 합니다.

메서드 .withCompressionType을 사용하여 압축 유형을 지정합니다.

      Pipeline p = ...;
      p.apply(TextIO.Read.named("ReadMyFile")
                         .from("gs://some/inputData.gz")
                         .withCompressionType(TextIO.CompressionType.GZIP));
    

TextIO는 현재 압축 파일에 쓰기를 지원하지 않습니다.

파일에 .gz 또는 .bz2 확장 프로그램이 있는 경우에는 압축 유형을 명시적으로 지정할 필요가 없습니다. AUTO는 기본 압축 유형으로, 파일 확장자를 검사해 파일에 적합한 압축 유형을 판단합니다. glob의 결과 파일이 .gz, .bz2, 비압축 유형이 혼합된 파일인 경우에도 glob에서 올바른 압축 유형을 판단합니다.