Spark と Hive を Lakehouse ランタイム カタログと統合すると、セルフホストの Hive Metastore(HMS)を維持する運用上のオーバーヘッドが解消され、BigQuery での統合メタデータの共有とテーブルの直接クエリが可能になります。
このドキュメントでは、この統合の機能上の制約とサービスに関する考慮事項について説明します。Lakehouse ランタイム カタログでオープンソース データベース パイプラインを移行または構築する前に、これらの制限事項を確認して、この統合が技術要件に合致しているかどうかを判断してください。
上限ではなく構成とクエリの手順については、Lakehouse ランタイム カタログで Spark と Hive を使用するをご覧ください。
Lakehouse ランタイム カタログの制限事項
このセクションでは、さまざまなサービスで Lakehouse ランタイム カタログを使用する場合の制限事項について説明します。
Metastore の制限事項
- Managed Service for Apache Spark は、ボーダーレス Lakehouse Metastore を使用する PySpark ジョブのみをサポートします。
- Dataproc API は、
propertiesフィールドでの Lakehouse Metastore プロパティの設定をサポートしていません。 - 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 Metastore リソース | Lakehouse ランタイム カタログ リソース | IAM 権限 |
|---|---|---|
| カタログ | カタログ | biglake.catalogs.* |
| データベース | データベース | biglake.namespaces.* |
| テーブル | テーブル | biglake.tables.* |
ガバナンス
Hive Metastore(HMS)は、テーブル、列、パーティション レベルでガバナンスを提供します。Lakehouse ランタイム カタログは、テーブルレベルとパーティション レベルの IAM 権限を提供します。列レベルのガバナンスはサポートされていません。
ストレージの制限事項
- BigQuery 外部テーブルの制限がすべて適用されます。
パーティションの制限事項
- パーティション レベルでの列レベルの統計情報のトラッキングはサポートされていません。
BatchCreateHivePartitionsAPI の上限は、呼び出しを 900 個のパーティションに制限します。
次のステップ
- Lakehouse ランタイム カタログで Spark と Hive を使用します。