Hive-BigQuery コネクタ

オープンソースの Hive-BigQuery コネクタを使用すると、Apache Hive ワークロードにより BigQuery および BigLake テーブルとの間でデータの読み取りと書き込みを行うことができます。データは BigQuery ストレージか Cloud Storage のオープンソース データ形式で保存できます。

Hive-BigQuery コネクタは、Hive Storage Handler API を実装して、Hive ワークロードを BigQuery および BigLake テーブルと統合できるようにします。Hive 実行エンジンは、集計や結合などのコンピューティング オペレーションを処理します。コネクタは、BigQuery や BigLake が接続された Cloud Storage バケットに保存されているデータとのやり取りを管理します。

次の図は、Hive-BigQuery コネクタがコンピューティング レイヤとデータレイヤの間でどのように連携するかを示しています。

Hive-BigQuery コネクタのアーキテクチャ

ユースケース

一般的なデータドリブン シナリオで Hive-BigQuery コネクタを使うと、次のようなメリットがあります。

  • データの移行Hive データ ウェアハウスを BigQuery に移行し、Hive のクエリを BigQuery の SQL 言語に段階的に変換する予定です。データ ウェアハウスのサイズと多数の接続済みアプリケーションにより、移行にはかなり時間がかかると予想され、移行オペレーション中の継続性を確保する必要があります。ワークフローは次のとおりです。

    1. データを BigQuery に移行する
    2. コネクタを使用して、元の Hive クエリにアクセスして実行し、同時に Hive クエリを BigQuery の ANSI 準拠の SQL 言語に段階的に変換します。
    3. 移行と変換が完了したら、Hive を廃止します。
  • Hive と BigQuery のワークフロー。一部のタスクには Hive を使用し、BigQuery BI EngineBigQuery ML などの機能を利用するワークロードには BigQuery を使用する予定である。このコネクタを使用して、Hive テーブルを BigQuery テーブルに結合します。

  • オープンソース ソフトウェア(OSS)スタックへの依存。ベンダーのロックインを回避するには、データ ウェアハウスに完全な OSS スタックを使用します。データプランは次のとおりです。

    1. Avro、Parquet、ORC などの元の OSS 形式でデータを BigLake 接続を使用して Cloud Storage バケットに移行します。

    2. 引き続き Hive を使用して Hive SQL 言語クエリの実行と処理を行います。

    3. 必要に応じて、BigQuery に接続するために次のコネクタを使用します。

機能

Hive-BigQuery コネクタを使用すると、BigQuery データを操作し、次のタスクを行うことができます。

  • MapReduce および 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 コネクタをインストールして構成する手順をご覧ください。