파이프라인 I/O

파이프라인 생성 시 Google Cloud Storage 또는 BigQuery 테이블의 파일과 같이 외부 소스에서 데이터를 읽어야 하는 경우가 종종 있습니다. 마찬가지로, 파이프라인의 결과 데이터를 Cloud Storage 또는 BigQuery의 출력 파일과 같은 외부 데이터 싱크로 출력하려 할 수 있습니다. Dataflow SDK는 외부 소스에서 데이터를 읽거나 외부 싱크에 데이터를 쓸 수 있는 변환을 제공합니다.

Dataflow SDK는 다양한 공통 데이터 저장소 유형에 적합한 ReadWrite 변환을 제공합니다. 또한, ReadWrite API를 확장할 수 있습니다. 즉, 파이프라인이 기본 변환에서 지원되지 않는 데이터 저장 형식으로 데이터를 읽거나 쓰게 하려면 고유한 ReadWrite 작업을 제공하는 확장을 빌드할 수 있습니다.

입력 데이터 읽기

Read 변환은 외부 소스에서 데이터를 읽고 파이프라인에서 사용하기 위한 데이터의 PCollection 표현을 반환합니다. 파이프라인을 구성하는 중에 언제든지 Read 변환을 사용하여 새 PCollection을 만들 수 있습니다. 일반적으로 프로그램 시작 시에 만듭니다.

자바

참고: Read 변환에는 PCollection 입력이 없으므로, 해당 변환은 Pipeline에 직접 적용됩니다. 평소와 같이 apply에 대한 호출로 요소가 데이터를 나타내는 적합한 유형의 PCollection이 반환됩니다. 자세한 내용은 파이프라인 구성을 참조하세요.

여러 위치에서 읽기

Text와 같은 다수의 Read 변환은 사용자가 제공하는 glob 연산자와 일치하는 여러 입력 파일에서 읽기를 지원합니다. 다음과 같은 Read 변환을 사용하여 glob 연산자(*)를 사용하여 Google Cloud Storage의 특정 위치에서 일치하는 모든 입력 파일을 읽는 것이 좋습니다.

자바

  p.apply(TextIO.Read.named("ReadFromText")
		     .from("gs://my_bucket/path/to/input-*.csv");

위의 Read는 Cloud Storage의 특정 위치에서 접두사 'input-' 및 접미사 '.csv'를 가진 모든 파일을 읽습니다.

분산된 소스의 데이터를 단일 PCollection으로 읽으려면 각각을 개별적으로 읽은 후 Flatten 변환을 사용하여 단일 PCollection을 만듭니다.

출력 데이터 쓰기

Write 변환은 PCollection의 데이터를 외부 데이터 소스에 씁니다. 주로 프로그램 끝에서 Write 변환을 사용하여 파이프라인의 최종 결과를 출력합니다. 그러나 Write를 사용하여 파이프라인의 모든 시점에서 PCollection의 데이터를 출력할 수 있습니다.

Write 변환을 사용하려면 쓰려는 PCollection에서 apply 메소드를 호출하고 적절한 Write 변환을 인수로 전달합니다.

자바

PCollectionWrite 변환을 apply하는 경우 반환 값은 유형 PDone의 객체입니다. PDone 객체는 trivial 결과 객체이며 무시해도 안전합니다.

여러 출력 파일에 쓰기

Text와 같은 파일 기반 입력 및 출력 데이터의 경우, Write 변환은 기본적으로 여러 출력 파일에 씁니다. Cloud Dataflow 서비스는 항상 분할된 출력 파일을 자동으로 생성합니다. 출력 파일 이름을 Write 변환으로 전달하면 파일 이름은 Write 변환이 생성되는 모든 출력 파일에 대한 프리픽스로 사용됩니다.

Write 변환에 접미사를 지정하여 각 출력 파일에 접미사를 추가할 수 있습니다.

Cloud Storage의 위치에 여러 출력 파일을 쓰는 다음과 같은 Write 변환을 사용하는 것이 좋습니다. 각 파일에는 접두사 'numbers', 숫자 태그, 접미어 '.csv'가 있습니다.

자바

  records.apply(TextIO.Write.named("WriteToText")
			    .to("gs://my_bucket/path/to/numbers")
			    .withSuffix(".csv"));

위의 Write는 Cloud Storage의 특정 위치에 접두사 'numbers'와 접미사 '.csv'가 있는 여러 출력 파일을 씁니다.

Dataflow SDK에 포함된 I/O API

Dataflow SDK에 일부 소스 및 싱크 API가 포함되어 있습니다.

자바

자바용 Dataflow SDK는 다수의 공통 데이터 형식에 대해 다음과 같은 ReadWrite 변환을 제공합니다.

추가 I/O API

I/O API 외에도 Dataflow SDK는 고유한 커스텀 데이터 소스와 싱크를 만들기 위해 사용할 수 있는 확장 가능한 API를 제공합니다.

자바

Dataflow의 소스 및 Sink API를 사용하여 고유한 커스텀 입력 소스와 출력 싱크를 만들 수 있습니다.