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 をサポートしていないため、Kerberos を使用する Managed Service for Apache Spark クラスタを作成することはできません。
- Cloud Storage バケットが Hive カタログと同じリージョンにある限り、データベースとテーブルは Hive カタログとは異なる Cloud Storage
location_uriを使用できます。 - Hive カタログに Iceberg Namespace とテーブルを含めることはできません。Iceberg の Namespace とテーブルを作成して使用するには、代わりに Lakehouse ランタイム カタログを使用します。
テーブルの制限事項
- テーブルの名前変更はサポートされていません。
- パーティション名の変更はサポートされていません。
- テーブルまたはデータベースを削除しても、関連するファイルは Cloud Storage から削除されません。
- 大文字と小文字を区別しない検索はサポートされていません。
- クラスタリングとバケット化はサポートされていません。
パーティション バッチサイズ
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 カタログは、ユーザーが開始するフェイルオーバーなどの完全な障害復旧機能を提供しません。
Hive カタログを作成するときは、Cloud Storage バケットのリージョンと一致するように
primary_locationを設定する必要があります。Lakehouse ランタイム カタログは、バケットのデュアルリージョンまたはマルチリージョン構成に基づいて、メタデータをセカンダリ リージョンに自動的にコピーします。このセカンダリ メタデータのコピーは読み取り専用であり、プライマリに昇格させることはできません。データの冗長性は、バケットのデュアルリージョンまたはマルチリージョン設定に依存します。これは、Lakehouse ランタイム カタログのメタデータ レプリケーションとは異なります。
Hive メタストアの代替として Lakehouse ランタイム カタログを使用する場合の考慮事項
Lakehouse ランタイム カタログのプレビュー版は、Hive Metastore インターフェースのサブセットをサポートしています。この設計では、Hive Metastore との完全な互換性を必要としない Spark ExternalCatalog との互換性が優先されます。
リソース マッピング
次の表に、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 個のパーティションに制限します。