BigQuery DataFrames로 온라인 및 오프라인 데이터 세트 동기화
BigQuery와 함께 Bigtable을 사용하면 실시간 분석 데이터베이스를 빌드하고 머신러닝 (ML) 파이프라인에서 이를 사용할 수 있습니다. 이를 통해 데이터를 동기화하여 데이터 조작 및 모델 개발 (오프라인 액세스)과 지연 시간이 짧은 애플리케이션 제공 (온라인 액세스)을 지원할 수 있습니다.
실시간 분석 데이터베이스를 빌드하려면 BigQuery 데이터 처리를 위한 오픈소스 Python 라이브러리 모음인 BigQuery DataFrames를 사용하면 됩니다. BigQuery DataFrames를 사용하면 BigQuery에서 모델을 개발하고 학습할 수 있으며 온라인 제공을 위해 Bigtable의 ML 모델에 사용되는 최신 데이터 값의 사본을 자동으로 복제할 수 있습니다.
이 문서에서는 bigframes.streaming API
를 사용하여 BigQuery와 Bigtable에서 데이터 세트를 자동으로 복제하고 동기화하는 BigQuery 작업을 만드는 방법을 간략히 설명합니다. 이 문서를 읽기 전에 다음 문서를 숙지하세요.
BigQuery DataFrames
BigQuery DataFrames를 사용하면 BigQuery에서 모델을 개발하고 학습시키고 온라인 게재를 위해 Bigtable의 ML 모델에 사용된 최신 데이터 값의 사본을 자동으로 복제할 수 있습니다. 이를 통해 다음을 수행할 수 있습니다.
- BigQuery 데이터를 직접 대상으로 Pandas 호환 인터페이스(
bigframes.pandas
)에서 데이터 변환을 개발합니다. - scikit-learn과 유사한 API (
bigframes.ML
)를 사용하여 모델 학습 - 사용자 대상 애플리케이션을 지원하기 위해 지연 시간이 짧은 추론에 필요한 데이터를 Bigtable (
bigframes.streaming
)과 동기화합니다.
BigFrames StreamingDataFrame
bigframes.streaming.StreamingDataFrame
는 BigQuery DataFrames 패키지의 DataFrame 유형입니다. 이를 통해 지정된 BigQuery 테이블에서 Bigtable로 데이터를 스트리밍하여 온라인 제공을 위해 지속적으로 실행되는 작업을 생성하는 데 사용할 수 있는 StreamingDataFrame
객체를 만들 수 있습니다. 이는
BigQuery 연속 쿼리를 생성하여 실행합니다.
BigFrames StreamingDataFrame
는 다음을 실행할 수 있습니다.
- 지정된 BigQuery 테이블에서
StreamingDataFrame
만들기 - 원하는 경우 콘텐츠 선택, 필터링, 미리보기와 같은 추가 Pandas 작업을 실행합니다.
- Bigtable로의 스트리밍 작업 만들기 및 관리
필요한 역할
BigQuery 노트북에서 BigQuery DataFrames를 사용하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
Bigtable 테이블에 데이터를 쓰는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
시작하기
BigQuery DataFrames는 오픈소스 패키지입니다. 최신 버전을 설치하려면 pip install --upgrade bigframes
를 실행합니다.
첫 번째 BigFrames StreamingDataFrame
를 만들고 BigQuery와 Bigtable 간에 데이터를 동기화하려면 다음 코드 스니펫을 실행합니다.
전체 코드 샘플은 GitHub 노트북 BigFramesStreamingDataFrame을 참고하세요.
import bigframes.streaming as bst
bigframes.options._bigquery_options.project = "PROJECT"
sdf = bst.read_gbq_table("birds.penguins_bigtable_streaming")
job = sdf.to_bigtable(instance="BIGTABLE_INSTANCE",
table="TABLE",
app_profile=None,
truncate=True,
overwrite=True,`
auto_create_column_families=True,
bigtable_options={},
job_id=None,
job_id_prefix= "test_streaming_",)
print(job.running())
print(job.error_result)
다음을 바꿉니다.
- PROJECT: Google Cloud 프로젝트의 ID입니다.
- BIGTABLE_INSTANCE: 쓰려는 테이블이 포함된 Bigtable 인스턴스의 ID입니다.
- TABLE: 쓰려는 Bigtable 테이블의 ID입니다.
작업이 초기화되면 BigQuery에서 연속 쿼리로 실행되고 모든 데이터 변경사항을 Bigtable로 스트리밍합니다.
비용
BigQuery BigFrames API를 사용하는 데는 추가 비용이 청구되지 않지만 연속 쿼리, Bigtable, BigQuery에 사용되는 기본 리소스에 대한 요금이 청구됩니다.
연속 쿼리에서는 슬롯으로 측정되는 BigQuery 용량 컴퓨팅 가격 책정을 사용합니다. 연속 쿼리를 실행하려면 Enterprise 또는 Enterprise Plus 버전을 사용하는 예약과 CONTINUOUS
작업 유형을 사용하는 예약 할당이 있어야 합니다.
데이터 수집 및 스토리지 등의 기타 BigQuery 리소스 사용 요금은 BigQuery 가격 책정에 표시된 요율에 따라 청구됩니다.
연속 쿼리 결과를 수신하는 Bigtable 서비스의 사용량에는 Bigtable 가격 책정 요금이 청구됩니다.
제한사항
연속 쿼리와 관련된 모든 지형지물 및 위치 제한사항은 스트리밍 DataFrame에도 적용됩니다.
다음 단계
- Feast on 시작하기 Google Cloud
- Feast를 통한 ML 개발 간소화
- 외부 테이블에 저장된 Bigtable 데이터 쿼리
- BigQuery에서 Bigtable로 데이터 내보내기