Oracle でフェデレーション クエリを実行する
プレビュー
この機能はパブリックプレビュー段階です。
この記事では、 Databricksによって管理されていないOracleデータに対してフェデレーションクエリを実行するようにレイクハウスフェデレーションを設定する方法について説明します。 レイクハウスフェデレーションの詳細については、「 レイクハウスフェデレーションとは」を参照してください。
レイクハウスフェデレーションを使用してOracleデータベースに接続するには、 Databricks Unity Catalog メタストアに次のものを作成する必要があります。
Oracle データベースへの接続。
OracleUnity Catalog Unity Catalogデータベースを にミラーリングする フォーリンカタログDatabricks 。これにより、 クエリ構文とデータガバナンスツールを使用してデータベースへの ユーザーアクセスを管理できます。
始める前に
開始する前に、このセクションの要件を満たしていることを確認してください。
Databricks の要件
ワークスペースの要件:
Unity Catalogのワークスペースが有効になっています。
コンピュートの要件:
コンピュート・リソースからターゲット・データベース・システムへのネットワーク接続。 「レイクハウスフェデレーションのネットワーキングに関する推奨事項」を参照してください。
Databricksコンピュートは、Databricks Runtime 16.1 以降と、共有またはシングル ユーザー アクセス モードを使用する必要があります。
SQLウェアハウスは PRO または サーバレスで、2024.50 以上を使用する必要があります。
必要な権限:
接続を作成するには、メタストア管理者か、ワークスペースに接続されているUnity Catalogメタストアの
CREATE CONNECTION
権限を持つユーザーである必要があります。フォーリンカタログを作成するには、メタストアに対する
CREATE CATALOG
権限を持ち、接続の所有者であるか、接続に対するCREATE FOREIGN CATALOG
権限を持っている必要があります。
追加の権限要件は、以下の各タスクベースのセクションに記載しています。
Databricks 接続を作成する
接続では、外部データベースシステムにアクセスするためのパスと認証情報を指定します。接続を作成するには、カタログエクスプローラーを使用するか、Databricksノートブックまたは Databricks SQLクエリーエディタで CREATE CONNECTION
SQLコマンドを使用できます。
注:
Databricks REST API または Databricks CLI を使用して接続を作成することもできます。 POST /api/2.1/unity-catalog/connections および Unity Catalog コマンドを参照してください。
必要な権限:メタストア管理者またはCREATE CONNECTION
権限を持つユーザー。
Databricks ワークスペースで、[ カタログ] をクリックします。
左側のペインで、[外部データ]メニューを展開し、[接続]を選択します。
[接続の作成]をクリックします。
ユーザーフレンドリーな接続名を入力します。
[ 接続の種類 ] で [Oracle] を選択します。
Oracle インスタンスの次の接続プロパティを入力します。
ホスト: たとえば、
oracle-demo.123456.rds.amazonaws.com
ポート: たとえば、
1521
ユーザー: たとえば、
oracle_user
パスワード: たとえば、
password123
(オプション)コメントを追加します。
作成 をクリックします。
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Databricks では、資格情報などの機密性の高い値には、プレーンテキスト文字列の代わりに Databricks シークレット を使用することをお勧めします。 例えば:
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
ノートブック SQL コマンドでプレーンテキスト文字列を使用する必要がある場合は、$
などの特殊文字を with \
でエスケープして文字列を切り捨てないようにしてください。 たとえば、 \$
のようになります。
シークレットの設定については、「シークレット管理」を参照してください。
フォーリンカタログの作成
フォーリンカタログは、外部データシステム内のデータベースをミラーリングするため、DatabricksとUnity Catalogを使用して、そのデータベース内のデータへのアクセスを管理できます。フォーリンカタログを作成するには、すでに定義されているデータソースへの接続を使用します。
フォーリンカタログを作成するには、カタログ エクスプローラー、または Databricks ノートブックまたは SQL クエリ エディターのCREATE FOREIGN CATALOG
SQL コマンドを使用できます。
注:
Databricks REST API または Databricks CLI を使用してカタログを作成することもできます。 POST /api/2.1/unity-catalog/catalogs を参照してください。 および Unity Catalog コマンド。
必要な権限:メタストアの CREATE CATALOG
権限、接続の所有権または接続の CREATE FOREIGN CATALOG
権限。
Databricks ワークスペースで、[ カタログ] をクリックして [カタログ エクスプローラー] を開きます。
カタログペインの上部で、 追加アイコンをクリックし、メニューから[カタログを追加]を選択します。
または、クイックアクセスページから[カタログ]ボタンをクリックし、[カタログを作成]ボタンをクリックします。
「カタログの作成」のフォーリンカタログの作成手順に従ってください。
ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。 括弧内の項目はオプションです。 プレースホルダーの値を置き換えます。
<catalog-name>
:Databricksのカタログの名前。<connection-name>
:データソース、パス、およびアクセス認証情報を指定する接続オブジェクト。<service-name>
: Databricks のカタログとしてミラーリングするサービス名。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');
データ型のマッピング
Oracle から Spark に読み取る場合、データ型は次のようにマップされます。
オラクルタイプ |
Spark タイプ |
---|---|
タイムゾーンのタイムスタンプ、ローカルタイムゾーンのタイムスタンプ |
TimestampType |
日付、タイムスタンプ |
TimestampType/TimestampNTZType* |
数値、浮動小数点数 |
DecimalType |
バイナリ浮動小数点数 |
FloatType |
バイナリダブル |
DoubleType |
CHAR、NCHAR、VARCHAR2、NVARCHAR2 |
StringType |
* DATE と TIMESTAMP は、 spark.sql.timestampType = TIMESTAMP_LTZ
(デフォルト) の場合、Spark TimestampType にマップされます。 これらは、 spark.sql.timestampType = TIMESTAMP_NTZ
の場合、TimestampNTZType にマップされます。