Dataflow에서 Bigtable로 쓰기

데이터를 Dataflow에서 Bigtable로 쓰려면 Apache Beam Bigtable I/O 커넥터를 사용합니다.

동시 로드

동시 로드는 Bigtable 클러스터의 노드 수에 따라 제어됩니다. 부하 분산의 일부로 키 범위가 노드 간에 이동할 수 있지만, 각 노드는 하나 이상의 키 범위를 관리합니다. 자세한 내용은 Bigtable 문서의 성능 이해를 참조하세요.

인스턴스 클러스터의 노드 수에 따라 비용이 청구됩니다. Bigtable 가격 책정을 참조하세요.

성능

다음 표는 Bigtable I/O 쓰기 작업의 성능 측정항목을 보여줍니다. 워크로드는 자바용 Apache Beam SDK 2.48.0을 사용해 하나의 e2-standard2 작업자에서 실행되었습니다. Runner v2를 사용하지 않았습니다.

레코드 1억 건 | 1KB | 열 1개 처리량(바이트) 처리량(요소)
쓰기 65MBps 초당 요소 60,000개

이러한 측정항목은 간단한 일괄 파이프라인을 기반으로 합니다. 이는 I/O 커넥터 간 성능을 비교하기 위한 것이며 실제 파이프라인을 나타내지는 않습니다. Dataflow 파이프라인 성능은 복잡하며 VM 유형, 처리 중인 데이터, 외부 소스 및 싱크의 성능, 사용자 코드와 상관관계가 있습니다. 측정항목은 Java SDK 실행을 기반으로 하며 다른 언어 SDK의 성능 특성을 나타내지 않습니다. 자세한 내용은 Beam IO 성능을 참조하세요.

권장사항

  • 일반적으로 트랜잭션은 사용하지 않는 것이 좋습니다. 트랜잭션은 멱등성을 보장하지 않으며 Dataflow가 재시도로 인해 이를 여러 번 호출하여 예상치 못한 값이 발생할 수 있습니다.

  • 단일 Dataflow 작업자가 여러 키 범위의 데이터를 처리할 수 있으므로 Bigtable에 비효율적인 쓰기가 발생할 수 있습니다. GroupByKey를 사용하여 Bigtable 키로 데이터를 그룹화하면 쓰기 성능이 크게 향상될 수 있습니다.

  • Bigtable에 대규모 데이터 세트를 쓰는 경우 withFlowControl 호출을 고려하세요. 이 설정은 Bigtable 서버에 데이터를 제공하는 데 충분한 리소스가 있도록 Bigtable 서버에 대한 트래픽 비율을 자동으로 제한합니다.

다음 단계