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. BigLake 接続を使用して、元の OSS 形式(Avro、Parquet、ORC など)でデータを 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 コネクタをインストールして構成する手順をご覧ください。