Apache Hive カタログ エンドポイントを介して Apache Spark と Apache Hive を Lakehouse ランタイム カタログと統合すると、セルフホスト型の Hive Metastore(HMS)を維持することなく、統合されたメタデータを共有し、BigQuery でテーブルを直接クエリできます。
Lakehouse ランタイム カタログでオープンソース データベース パイプラインを移行または構築する前に、このドキュメントの機能上の制約とサービスに関する考慮事項を確認して、統合が技術要件を満たしているかどうかを判断してください。設定とクエリの手順については、Lakehouse ランタイム カタログを使用して Spark と Hive を設定するをご覧ください。
Lakehouse ランタイム カタログの制限事項
このセクションでは、さまざまなサービスで Lakehouse ランタイム カタログを使用する場合の制限事項について説明します。
Metastore の制限事項
- サーバーレス バッチ ワークロードの場合、Managed Service for Apache Spark は、Apache Hive カタログ エンドポイントに接続するときに PySpark ジョブのみをサポートします。
- サーバーレス ワークロードの場合、Dataproc API は
propertiesフィールドのhive.*またはhive:*metastore プロパティをサポートしていません。代わりにspark.hive.metastore.*プロパティを指定します(または、クラスタで Hive CLI を使用する場合は/etc/hive/conf/hive-site.xmlフラグまたは--hiveconfフラグを構成します)。 - Lakehouse ランタイム カタログは委任トークン API や主キー API をサポートしていないため、Kerberos を使用する Managed Service for Apache Spark クラスタを作成することはできません。
- データベースとテーブルは、Cloud Storage バケットが Hive カタログと同じリージョンにある限り、Hive カタログとは異なる Cloud Storage
location_uriを使用できます。 - Hive カタログに Iceberg の名前空間とテーブルを含めることはできません。Iceberg の名前空間とテーブルを作成して使用するには、代わりにレイクハウス ランタイム カタログを使用します。
- Hive データベースと Hive カタログでは、カスケード削除はサポートされていません。
- Trino のサポートは利用できません。
テーブルの制限事項
- テーブル名の変更はサポートされていません。
- パーティションの名前変更はサポートされていません。
- テーブルやデータベースを削除しても、関連するファイルは Cloud Storage から削除されません。
- 大文字と小文字を区別しない検索はサポートされていません。
- クラスタリングとバケット化はサポートされていません。
- 仮想ビューのみがサポートされています。
- Delta Lake テーブルは、Apache Spark(読み取りと書き込み)と BigQuery(読み取り専用)でサポートされています。Hive クライアント(Hive CLI など)は Delta Lake テーブルをサポートしていません。すべての BigQuery Delta Lake 外部テーブルの制限と BigLake テーブルの制限が適用されます。詳細と特定の制限事項については、Delta テーブルを使用して Spark を設定するをご覧ください。
パーティションのバッチサイズ
Lakehouse ランタイム カタログは、パーティション プルーニングで使用するパーティショニング情報の保存と取得をサポートしています。書き込みよりも読み取りに最適化されているため、パーティション プルーニングによりクエリのパフォーマンスが向上します。
パーティションの取り込みパフォーマンスを最適化するため、バッチ パーティション サイズは 900 に制限されています。
パーティショニング オペレーションのバッチサイズを決定する Hive プロパティと Spark プロパティに、次の構成を設定します。
SET hive.msck.repair.batch.size = 900;SET spark.sql.addPartitionInBatch.size = 900;
BigQuery の制限事項
- デフォルトでは、BigQuery は
ARRAY<ARRAY<>>データ型またはARRAY<MAP<>>データ型をサポートしていません。MAPのサポートを許可リストに追加する必要があります。ワークロードでMAPを広範囲に使用している場合は、biglake-help@google.com までお問い合わせください。 MAPキータイプは、プリミティブ データ型のみをサポートします。ARRAY、STRUCT、MAPをキータイプとして使用することはできません。BigQuery は Cloud Storage のデータのみをクエリできます。次の制限が適用されます。
- テーブルのロケーション URI にワイルドカード(
*)を含めることはできません。 - テーブルのロケーション URI はディレクトリにする必要があります。
- テーブルのロケーション URI にワイルドカード(
クロスリージョン レプリケーションと障害復旧の制限事項
Lakehouse ランタイム カタログは、クロスリージョン レプリケーションと障害復旧を提供し、カタログの可用性と復元力を向上させます。
Hive カタログで Lakehouse ランタイム カタログを使用する場合は、次の制限が適用されます。
- Hive カタログを作成するときは、Cloud Storage バケットのリージョンと一致するように
primary_locationを設定する必要があります。Lakehouse ランタイム カタログは、バケットのデュアルリージョンまたはマルチリージョン構成に基づいて、メタデータをセカンダリ リージョンに自動的にコピーします。このセカンダリ メタデータ コピーは、フェイルオーバー オペレーションを使用してプライマリに昇格するまで読み取り専用です。 - フェイルオーバー中、
replication_timeタイムスタンプはカタログ メタデータのレプリケーションのみを追跡します。基盤となる Cloud Storage データファイルがセカンダリ リージョンへのレプリケーションを完了したかどうかは追跡しません。データの冗長性は、バケットのデュアルリージョンまたはマルチリージョンの設定に依存します。これは、Lakehouse ランタイム カタログ メタデータのレプリケーションとは異なります。
考慮事項
Lakehouse ランタイム カタログは、Hive Metastore インターフェースのサブセットをサポートしています。この設計では、Spark ExternalCatalog との互換性が優先されます。Hive Metastore との完全な互換性は必要ありません。
リソース マッピング
次の表に、Hive Metastore リソースと Lakehouse ランタイム カタログ リソース、および必要な Identity and Access Management(IAM)権限のマッピングを示します。
| Hive メタストア リソース | Lakehouse ランタイム カタログ リソース | IAM 権限 |
|---|---|---|
| カタログ | カタログ | biglake.catalogs.* |
| データベース | データベース | biglake.namespaces.* |
| テーブル | テーブル | biglake.tables.* |
ガバナンス
Hive メタストア(HMS)は、テーブル、列、パーティションのレベルでガバナンスを提供します。Lakehouse ランタイム カタログは、テーブルレベルとパーティション レベルの IAM 権限を提供します。列レベルのガバナンスはサポートされていません。
ストレージの制限
- BigQuery 外部テーブルの制限がすべて適用されます。
パーティションの制限
- パーティション レベルでの列レベルの統計情報のトラッキングはサポートされていません。
BatchCreatePartitions、BatchDeletePartitions、BatchUpdatePartitionsの API メソッドでは、呼び出しがバッチあたり 900 パーティションに制限されます。
次のステップ
- Lakehouse ランタイム カタログで Spark と Hive を使用する。