Apache Hive から BigQuery への移行: 概要

このドキュメントでは、Apache Hive と BigQuery の違いを比較し、移行に関する主な考慮事項について説明します。移行方法の詳細については、Apache Hive 移行ガイドをご覧ください。

また、バッチ SQL 変換を使用して複数の SQL スクリプトを一括で移行することも、インタラクティブ SQL 変換を使用してアドホック クエリ変換することもできます。Apache HiveQL は、両方の SQL 変換サービスで完全にサポートされています。

機能

Hive と BigQuery はどちらも分散型のデータ ウェアハウス システムです。次の表は、その機能の概要を比較したものです。

機能 Hive BigQuery
可用性 実装方法によって異なる 月ごとの稼働率は 99.99% 以上
割り当て 実装方法によって異なる BigQuery の割り当て
使用可能な形式 Avro、Parquet、ORC、テキスト Avro、Parquet、ORC、CSV、JSON、Google ドライブ
マネージド テーブル ストレージ HDFS BigQuery ストレージ(Capacitor 形式)
外部テーブルソース HDFS、HBase Google Cloud Storage、Google スプレッドシート、Bigtable
トランザクション 制限あり。パーティション レベルでの ACID パーティション レベルでの制限あり複数ステートメント トランザクションをサポートします。
API サポート JDBC、ODBC、Thrift JDBC、ODBC、多数の言語によるクライアント ライブラリ
パーティショニング サポート 時間単位列、取り込み時間、整数の範囲
クラスタリング サポート サポート
レプリケーション HDFS によって異なる。データセンター間のレプリケーションは不可 Google が管理するためデータセンター間のレプリケーションの信頼性が高い
UDF すべての言語 SQL または JavaScript
データの読み込み バッチ、ストリーミング(制限あり) バッチ、ストリーミング
データ オペレーション DDL、DML DDL、DML、DCL、TCL

データ型

Apache Hive と BigQuery では、データ型のシステムが異なります。MAPUNION などのいくつかの例外を除き、ほとんどの場合 Hive のデータ型は BigQuery のデータ型 にマッピングできます。Apache Hive は BigQuery よりも暗黙的な型キャストを行います。その結果、バッチ SQL トランスレータは多数の明示的なキャストを挿入します。

Hive BigQuery
TINYINT INT64
SMALLINT INT64
INT INT64
BIGINT INT64
DECIMAL NUMERIC
FLOAT FLOAT64
DOUBLE FLOAT64
BOOLEAN BOOL
STRING STRING
VARCHAR STRING
CHAR STRING
BINARY BYTES
DATE DATE
- DATETIME
- TIME
TIMESTAMP DATETIME/TIMESTAMP
INTERVAL -
ARRAY ARRAY
STRUCT STRUCT
MAPS キー値を含む STRUCT(REPEAT フィールド)
UNION さまざまな型の STRUCT
- GEOGRAPHY
- JSON

ユーザーが定義した関数

Apache Hive では、Java でのユーザー定義関数(UDF)の作成がサポートされます。UDF を Hive に読み込んで、通常のクエリで使用できます。BigQuery UDF は、GoogleSQL または JavaScript で記述する必要があります。SQL UDF はパフォーマンスが優れているため、Hive UDF を SQL UDF に変換することをおすすめします。JavaScript を使用する必要がある場合は、JavaScript UDF のベスト プラクティスをご覧ください。他の言語では、BigQuery はリモート関数をサポートしており、GoogleSQL クエリから Cloud Functions または Cloud Run で関数を呼び出すことが可能です。

BigQuery ではユーザー定義の集計関数(UDAF)がサポートされません。

セキュリティ

Hive と BigQuery ではセキュリティ モデルが異なります。以降のセクションで各セキュリティ モデルについて説明します。

Hive のアクセス制御

承認機能として、Hive は SQL Standards Based Authorizationを導入し(Hive 0.13.0 で導入)、詳細なアクセス制御が可能になりました。ロールベース アクセス制御(RBAC)によって、一般的なエンタープライズ環境で大量のユーザーとデータ オブジェクトの承認を管理できます。このセキュリティ メカニズムは Hadoop ID に基づいています。Hadoop は、ID の認証に Kerberos を使用しています。

Apache Sentry と Apache Ranger によるセキュリティ

Apache Ranger Apache Sentry は、Hive によって提供されるプラグインを使用して承認機能を実装する Apache プロジェクトです。Hive RBAC を構成しても、データを完全に保護することはできません。Hive のデータは通常、本来は非表示にするべきデータにユーザーが直接アクセスすることもできる HDFS に格納されるためです。Ranger と Sentry も、Hive の RBAC 設定から変換された POSIX ACL を使用して HDFS にデータを格納します。

BigQuery のセキュリティ

BigQuery は Identity and Access Management を使用してプロジェクト内のデータへのアクセスを制御します。BigQuery のデータセットへのアクセスを制限できます。テーブルとビューはデータセットの子リソースで、親データセットから権限を継承します。個々のテーブルに行レベル列レベルのセキュリティを割り当てることができます。

承認済みビュー承認済みデータセットを使用してアクセスを制限することもできます。

BigQuery はデフォルトでデータを暗号化します。独自の暗号鍵を管理するには、Cloud KMS と BigQuery を使用します。

次のステップ