Spark と Hive を Lakehouse ランタイム カタログと統合すると、セルフホスト型 Hive メタストア(HMS)の維持に伴う運用上のオーバーヘッドが解消され、BigQuery での統合メタデータの共有とテーブルの直接クエリが可能になります。
このドキュメントでは、この統合の機能上の制約とサービスに関する考慮事項について説明します。Lakehouse ランタイム カタログでオープンソース データベース パイプラインを移行または構築する前に、これらの制限事項を確認して、このプレビューが技術要件を満たしているかどうかを判断してください。
制限事項ではなく構成とクエリの手順については、 Lakehouse ランタイム カタログで Spark と Hive を使用するをご覧ください。
Lakehouse ランタイム カタログの制限事項
このセクションでは、さまざまなサービスで Lakehouse ランタイム カタログを使用する場合の制限事項について説明します。
メタストアの制限事項
- Managed Service for Apache Spark は、Lakehouse メタストアを使用する PySpark ジョブのみをサポートしています。
- Dataproc API では、
propertiesフィールドに Lakehouse メタストアのプロパティを設定できません。 - Lakehouse ランタイム カタログは委任トークンまたは主キー API をサポートしていないため、Kerberos を使用する Managed Service for Apache Spark クラスタを作成できません。
- Cloud Storage バケットが Hive カタログと同じリージョンにある限り、データベースとテーブルは Hive カタログとは異なる Cloud Storage
location_uriを使用できます。
テーブルの制限事項
- テーブルの名前変更はサポートされていません。
- パーティションの名前変更はサポートされていません。
- テーブルまたはデータベースを削除しても、関連するファイルは 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 ランタイム カタログは、リージョン間レプリケーションと 障害復旧を提供し、カタログの可用性と復元力を向上させます。
Lakehouse ランタイム カタログを Hive カタログで使用する場合、次の制限が適用されます。
Hive カタログは、ユーザーが開始するフェイルオーバーなど、完全な障害復旧機能を提供しません。
Hive カタログを作成する場合は、Cloud Storage バケットのリージョンと一致するように
primary_locationを設定する必要があります。Lakehouse ランタイム カタログは、バケットのデュアルリージョンまたはマルチリージョン構成に基づいて、メタデータをセカンダリ リージョンに自動的にコピーします。このセカンダリ メタデータのコピーは読み取り専用であり、プライマリに昇格させることはできません。データの冗長性は、バケットのデュアルリージョンまたはマルチリージョン設定に依存します。これは、Lakehouse ランタイム カタログのメタデータ レプリケーションとは異なります。
Lakehouse ランタイム カタログを Hive メタストアの代替として使用する場合の考慮事項
Lakehouse ランタイム カタログのプレビュー バージョンは、Hive メタストア インターフェースのサブセットをサポートしています。この設計では、Hive メタストアとの完全な互換性を必要としない Spark ExternalCatalog との互換性が優先されます。
リソース マッピング
次の表に、Hive メタストア リソースと Lakehouse ランタイム カタログ リソース、および必要な Identity and Access Management(IAM)権限を示します。
| Hive メタストア リソース | Lakehouse ランタイム カタログ リソース | IAM 権限 |
|---|---|---|
| カタログ | カタログ | biglake.catalogs.* |
| データベース | データベース | biglake.namespaces.* |
| テーブル | テーブル | biglake.tables.* |
ガバナンス
Hive メタストア(HMS)は、テーブル、列、パーティション レベルでガバナンスを提供します。Lakehouse ランタイム カタログは、テーブルレベルとパーティション レベルの IAM 権限を提供します。列レベルのガバナンスはサポートされていません。
ストレージの制限事項
- BigQuery 外部テーブルの制限がすべて適用されます。
パーティションの制限事項
- パーティション レベルでの列レベルの統計情報のトラッキングはサポートされていません。
BatchCreateHivePartitionsAPI は、呼び出しを 900 パーティションに制限します。