텍스트 파일

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를 호출하고 TextIO.ReadRead 변환으로 전달합니다. .named 작업은 읽기 작업의 변환 이름을 제공하고 .from 작업은 파일 경로를 제공합니다. apply의 반환 값은 lines라는 이름의 결과 PCollection<String>입니다.

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

텍스트 파일에 쓰기

자바

데이터를 텍스트 파일로 출력하려면 TextIO.Write를 출력할 PCollection에 적용합니다. TextIO.Write를 사용할 때는 다음 사항에 유의하세요.

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

이 예시에서 코드는 출력으로 PCollectionapply를 호출하고 TextIO.WriteWrite 변환으로 전달합니다. .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에서 올바른 압축 유형을 판단합니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.