外部テーブル ( フェデレーション テーブルとも呼ばれます) は、Unity カタログを使用して外部カタログの一部として登録されたテーブルです。 外部テーブルには外部システムによって管理されるデータとメタデータが含まれており、Unity Catalog では、これらのテーブルに対してクエリを実行するためのデータ ガバナンスが追加されています。
Azure Databricks では、外部テーブルを登録するための次の方法がサポートされています。
- クエリ フェデレーション では、セキュリティで保護された JDBC 接続を使用して、PostgreSQL や MySQL などの外部データ システムにフェデレーションします。
- カタログ フェデレーション は、Hive Metastore や Snowflake Horizon Catalog などの外部カタログを接続して、ファイル ストレージ内のデータに直接クエリを実行します。
Important
従来の Apache Spark および Azure Databricks ワークロードとの下位互換性のために、フェデレーション Hive メタストア内の外部テーブルは、テーブルが Hive マネージド テーブルか Hive 外部テーブルかを含む Hive メタストアからメタデータを返します。
外部テーブルを使用する理由
外部テーブルを使用すると、Azure Databricks を既存のデータ システムと統合したり、レガシ システムから移行したりする際に柔軟性が得られます。
多くの外部テーブルは、Azure Databricks によって管理されていないデータに直接アクセスするための一時的なソリューションとして機能します。これは、アップストリーム ETL ワークフローのデータ移行やコードリファクタリングを必要とせずに迅速なソリューションを提供するためです。 Databricks では、運用環境のワークロードを駆動するデータセット、または頻繁に Unity カタログのマネージド テーブルにクエリを実行するデータセットを移行することをお勧めします。マネージド テーブルは最高のパフォーマンスを提供し、多くの最適化が組み込まれています。 「外部テーブルをマネージド Unity カタログ テーブルに変換する」を参照してください。
クエリ フェデレーションでは、Lakeflow Connect でサポートされていない外部データ システムからデータを読み込むための無料のソリューションが提供されます。 Databricks では、具体化されたビューを使用して外部テーブルを Unity カタログにレプリケートすることをお勧めします。 具体化されたビューを使用した外部テーブルからのデータの読み込みを参照してください。
外部テーブルの作成または書き込み
十分な特権があり、ワークスペースが内部フェデレーション Hive メタストアで構成されている場合は、その内部フェデレーション Hive メタストアによってサポートされる外部テーブルを作成または書き込むことができます。 外部フェデレーション Hive メタストアと、Lakehouse フェデレーションを介してアクセスされるすべての外部テーブルは読み取り専用です。
外部テーブルは読み取り専用ですが、[ 更新者 ] フィールドには、最新のメタデータ更新をトリガーしたユーザーが表示されます。 Azure Databricks では、メタデータが古くなっていることが検出されると、クエリ中に外部テーブルメタデータが自動的に更新されます。 その結果、[ 更新者 ] フィールドには、そのユーザーが基になるデータを変更しなかった場合でも、クエリを実行した current_user が表示されます。
Azure Databricks では、外部テーブルへの書き込みのメタデータ、データ、またはセマンティクスは管理されません。 外部テーブルは Delta Lake や Apache Iceberg などの ACID に準拠した形式でサポートされる場合がありますが、外部テーブルでは Unity カタログマネージド テーブルのトランザクション保証は提供されません。
クエリパフォーマンス、書き込み速度の向上、データスキップ、メタデータのみのクエリに対するほとんどの Azure Databricks 最適化には、Unity カタログが必要です。 Databricks では、最新の Databricks ランタイム バージョンを使用して外部テーブルと Unity カタログ マネージド テーブルの間で読み取りと書き込みのクエリ パフォーマンスを比較し、待機時間とコストの違いを評価することをお勧めします。 Delta Lake と Apache Iceberg 用の Azure Databricks の Unity カタログマネージド テーブルを参照してください。