Hive-BigQuery 커넥터

오픈소스 Hive-BigQuery 커넥터를 사용하면 Apache Hive 워크로드가 BigQueryBigLake 테이블에 데이터를 읽고 쓸 수 있습니다. 또한 데이터를 BigQuery 스토리지에 저장하거나 Cloud Storage의 오픈소스 데이터 형식으로 저장할 수 있습니다.

Hive-BigQuery 커넥터는 Hive 워크로드가 BigQuery 및 BigLake 테이블과 통합될 수 있도록 Hive Storage Handler API를 구현합니다. Hive 실행 엔진은 집계 및 조인과 같은 컴퓨팅 작업을 처리하고 커넥터는 BigQuery 또는 BigLake 연결 Cloud Storage 버킷에 저장된 데이터와의 상호작용을 관리합니다.

다음 다이어그램은 Hive와 BigQuery 커넥터가 컴퓨팅 레이어와 데이터 레이어 사이의 적합성을 보여줍니다.

Hive-BigQuery 커넥터 아키텍처

사용 사례

Hive-BigQuery 커넥터가 일반적인 데이터 기반 시나리오에서 도움이 되는 몇 가지 방법은 다음과 같습니다.

  • 데이터 마이그레이션 Hive 데이터 웨어하우스를 BigQuery로 이동한 다음 Hive 쿼리를 BigQuery SQL 언어로 점진적으로 변환할 계획이라고 합시다. 데이터 웨어하우스 크기와 연결된 애플리케이션 수로 인해 마이그레이션에 상당한 시간이 걸릴 수 있으며 마이그레이션 작업 중에 연속성을 보장해야 합니다. 워크플로는 다음과 같습니다.

    1. BigQuery로 데이터 이동합니다.
    2. Hive 쿼리를 BigQuery ANSI 호환 SQL 언어로 점진적으로 변환하는 동안, 커넥터를 사용하여 원래 Hive 쿼리에 액세스하여 실행합니다.
    3. 마이그레이션 및 변환을 완료하면 Hive를 사용 중지합니다.
  • Hive 및 BigQuery 워크플로. 일부 작업에는 Hive를, BigQuery BI Engine 또는 BigQuery ML과 같은 기능을 활용하는 워크로드에는 BigQuery를 사용할 계획이라고 합시다. 커넥터를 사용하여 Hive 테이블을 BigQuery 테이블에 조인하세요.

  • 오픈소스 소프트웨어 (OSS) 스택에 의존. 공급업체 종속을 방지하려면 데이터 웨어하우스에 전체 OSS 스택을 사용합니다. 데이터 요금제는 다음과 같습니다.

    1. Avro, Parquet, ORC 등 원본 OSS 형식의 데이터를 BigLake 연결을 사용하여 Cloud Storage 버킷으로 마이그레이션합니다.

    2. Hive를 계속 사용하여 Hive SQL 언어 쿼리를 실행하고 처리합니다.

    3. 필요에 따라 커넥터를 사용하여 BigQuery에 연결하면 다음 기능을 활용할 수 있습니다.

기능

Hive-BigQuery 커넥터를 사용하여 BigQuery 데이터로 작업하고 다음 작업을 수행할 수 있습니다.

  • 맵리듀스 및 Tez 실행 엔진을 사용하여 쿼리를 실행합니다.
  • Hive에서 BigQuery 테이블을 만들고 삭제합니다.
  • BigQuery 및 BigLake 테이블을 Hive 테이블과 조인합니다.
  • Storage Read API 스트림과 Apache Arrow 형식을 사용하여 BigQuery 테이블에서 빠른 읽기를 수행합니다.
  • 다음 메서드를 사용하여 BigQuery에 데이터를 씁니다.
    • BigQuery Storage Write API 대기 모드를 사용하는 직접 쓰기. 짧은 새로 고침 기간이 있는 실시간에 가까운 대시보드와 같이 낮은 쓰기 지연 시간이 필요한 워크로드에 이 방법을 사용하세요.
    • 임시 Avro 파일을 Cloud Storage에 스테이징한 후 Load Job API를 사용하여 대상 테이블에 파일을 로드하여 간접 쓰기. BigQuery 로드 작업에는 요금이 부과되지 않으므로 이 방법은 직접 메서드보다 비용이 저렴합니다. 이 방법은 시간이 오래 걸리고 시간이 중요하지 않은 워크로드에서 최선의 사용 방법을 발견하기 때문입니다.
  • BigQuery 시간으로 파티션을 나눈 테이블과 클러스터링된 테이블에 액세스합니다. 다음 예는 Hive 테이블과 BigQuery에서 파티션이 나뉘고 클러스터링된 테이블 사이의 관계를 정의합니다.

    CREATE TABLE my_hive_table (int_val BIGINT, text STRING, ts TIMESTAMP)
    STORED BY 'com.google.cloud.hive.bigquery.connector.BigQueryStorageHandler'
    TBLPROPERTIES (
    'bq.table'='myproject.mydataset.mytable',
    'bq.time.partition.field'='ts',
    'bq.time.partition.type'='MONTH',
    'bq.clustered.fields'='int_val,text'
    );
    
  • 데이터 영역에서 불필요한 열을 검색하지 않도록 열을 프루닝합니다.

  • 조건자 푸시다운을 사용하여 BigQuery 스토리지 레이어에서 데이터 행을 사전 필터링합니다. 이 기법을 사용하면 네트워크를 통과하는 데이터의 양을 줄여 전반적인 쿼리 성능을 크게 향상시킬 수 있습니다.

  • Hive 데이터 유형을 BigQuery 데이터 유형으로 자동 변환합니다.

  • BigQuery 테이블 스냅샷 읽어보기

  • Spark SQL과 통합

  • Apache Pig 및 HCatalog와 통합

시작하기

자세한 내용은 Hive 클러스터에서 Hive-BigQuery 커넥터 설치 및 구성을 참조하세요.