Cloud Storage에서 Dataflow로 데이터를 읽으려면 Apache Beam TextIO
또는 AvroIO
I/O 커넥터를 사용합니다.
Google Cloud 라이브러리 종속 항목 포함
Cloud Storage에 TextIO
또는 AvroIO
커넥터를 사용하려면 다음 종속 항목을 포함합니다. 이 라이브러리는 "gs://"
파일 이름에 대한 스키마 핸들러를 제공합니다.
자바
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-google-cloud-platform</artifactId>
<version>${beam.version}</version>
</dependency>
Python
apache-beam[gcp]==VERSION
Go
import _ "github.com/apache/beam/sdks/v2/go/pkg/beam/io/filesystem/gcs"
자세한 내용은 Apache Beam SDK 설치를 참조하세요.
동시 로드
TextIO
및 AvroIO
커넥터는 두 가지 수준의 동시 로드를 지원합니다.
- 여러 작업자가 읽을 수 있도록 개별 파일에 별도로 키가 지정됩니다.
- 파일이 압축되지 않은 경우 커넥터가 각 파일의 하위 범위를 개별적으로 읽을 수 있으므로 매우 높은 수준의 동시 로드가 발생합니다. 이 분할은 파일의 각 줄이 의미 있는 레코드인 경우에만 가능합니다. 예를 들어 JSON 파일에는 기본적으로 사용할 수 없습니다.
성능
다음 표에는 Cloud Storage에서 읽기의 성능 측정항목이 나와 있습니다. 워크로드는 자바용 Apache Beam SDK 2.49.0을 사용해 하나의 e2-standard2
작업자에서 실행되었습니다. Runner v2를 사용하지 않았습니다.
레코드 1억 건 | 1KB | 열 1개 | 처리량(바이트) | 처리량(요소) |
---|---|---|
Read | 320MBps | 초당 요소 320,000개 |
이러한 측정항목은 단순 배치 파이프라인을 기반으로 합니다. 이러한 측정항목은 I/O 커넥터 사이의 성능 비교를 위해 사용되며 반드시 실제 파이프라인을 나타내지는 않습니다. Dataflow 파이프라인 성능은 복잡하며 VM 유형, 처리 중인 데이터, 외부 소스 및 싱크의 성능, 사용자 코드와 상관관계가 있습니다. 측정항목은 Java SDK 실행을 기반으로 하며 다른 언어 SDK의 성능 특성을 나타내지 않습니다. 자세한 내용은 Beam IO 성능을 참조하세요.
권장사항
Cloud Storage에서
watchForNewFiles
를 사용하지 마세요. 커넥터가 표시된 파일 목록을 메모리에 유지해야 하기 때문에 이 방법은 대규모 프로덕션 파이프라인의 경우 제대로 확장되지 않습니다. 목록을 메모리에서 플러시할 수 없으므로 시간이 지남에 따라 작업자의 작업 메모리가 줄어듭니다. 대신 Cloud Storage용 Pub/Sub 알림을 사용하세요. 자세한 내용은 파일 처리 패턴을 참조하세요.파일 이름과 파일 콘텐츠 모두 유용한 데이터라면
FileIO
클래스를 사용하여 파일 이름을 읽습니다. 예를 들어 파일 이름에 파일의 데이터를 처리할 때 유용한 메타데이터가 포함되어 있을 수 있습니다. 자세한 내용은 파일 이름 액세스를 참조하세요.FileIO
문서에도 이 패턴의 예시가 나와 있습니다.
다음 단계
TextIO
API 문서 참조- Google 제공 템플릿 목록 참조