5.10 インタープリタ・バインディングおよびノートブックについて

インタープリタは、バックエンドで特定のデータ処理言語を使用できるようにするプラグインです。

Oracle Machine Learning UIのZeppelinノートブックでは、Oracle Databaseインタープリタ・グループ内のSQL、PL/SQL、PythonおよびRインタープリタと、プレーン・テキストをHTMLに変換できるようにプレーン・テキスト書式設定構文用のMarkdownインタープリタを使用します。Condaインタープリタを使用してConda環境に接続し、Pythonのサードパーティのライブラリ・パッケージを操作します。

これらのインタープリタを使用するには、ノートブックのパラグラフの先頭でこれらのディレクティブを使用する必要があります
  • SQL — %sql
  • PL/SQL — %script
  • Python — %python
  • R - %r
  • Markdown — %md
  • Conda — %conda
ノートブックには、インタープリタ・グループ内のインタープリタ・バインディングの順序を定義するバインディングの内部リストが含まれています。Oracle Databaseインタープリタ・グループ内のインタープリタ・バインディングのデフォルトの順序は、次のとおりです:
  • — データベース内操作(通常はシリアル(非パラレル)実行)のための最小レベルのリソースを提供します。複数のユーザーによるデータベース内同時操作の最大数がサポートされています。優先度の低いインタープリタが、インタープリタ・リストの最も上に表示され、デフォルトになります。
  • — 可能な場合は、データベース内操作をパラレルに実行する固定数のCPUを提供します。制限された数の同時ユーザーがサポートされています。通常、プラガブル・データベースに割り当てられたCPU数の1.25倍です。
  • —プラガブル・データベースに割り当てられたCPUの数まで、データベース内操作をパラレルに実行するCPUの最高レベルのCPUを提供します。パフォーマンスは最高ですが、サポートされているのはデータベース内同時操作の最小数(通常は3)です。
インタープリタ・バインディングに関して、次のタスクを実行できます:
  • インタープリタのバインドとバインド解除: 特定のインタープリタをノートブックにバインドしない場合、エラー・メッセージが表示されます:
    Not supported interpreter <name of interpreter>
  • インタープリタ・バインディングの設定と順序変更。ノートブックの特定のパラグラフに特定のインタープリタを使用する場合は、インタープリタ・バインディングを設定して順序を変更できます。その場合は、そのパラグラフに特定のインタープリタを選択する必要があります。
  • ノートブックの特定のパラグラフのインタープリタ・バインディングの変更
次の各シナリオでは、インタープリタ・バインディングの順序に注意する必要があります:
  • ノートブックの作成 — ノートブックを作成するとき、そのノートブックは最初のインタープリタ・バインディング順序(低(デフォルト)、中、高)を継承します。
  • ノートブックのインポート — ノートブックをインポートするとき、そのノートブックは定義済のインタープリタ・バインディングを継承します。ただし、ノートブックをインポートした後、インタープリタ・バインディングの順序と必要なインタープリタが選択されていることを確認します。
  • ノートブックのエクスポート — ノートブックをエクスポートするとき、そのノートブックは定義済のインタープリタ・バインディングを継承します。
  • テンプレートからのノートブックの作成 — テンプレートからノートブックを作成するとき、そのノートブックはデフォルトのインタープリタ・バインディングの順序を継承します。

5.10.1 ノートブックの特定のパラグラフのインタープリタ・バインディングの変更

ノートブックに設定されているインタープリタ・バインディング順序は、そのノートブックのすべてのパラグラフに適用されます。ただし、ノートブック内の特定のパラグラフのSQL、PL/SQL、R、PythonおよびCondaインタープリタのインタープリタ・バインディングは上書きできます。

これらのインタープリタを使用するには、ノートブックのパラグラフの先頭でこれらのディレクティブを使用する必要があります
  • SQL — %sql
  • PL/SQL — %script
  • Python — %python
  • R - %r
  • Markdown — %md
  • Conda — %conda

ノート:

Pythonパラグラフのインタープリタ・バインディングは同じPythonエンジン・バックエンドを共有しないため、オーバーライドしないでください。
ノートブックの特定のパラグラフのインタープリタ・バインディングを変更するには:
  1. ノートブックを開き、歯車アイコンをクリックして、インタープリタ・バインディングとその順序を表示します。
    ノートブックのエディタ・オプション
    この例では、3つのSQLインタープリタすべてがノートブックにバインドされていますが、リソース割当てがlowadwpcwdp_low %sqlがリストの最初のインタープリタになっているため、これがデフォルトです。Markdownインタープリタは、ノートブックにバインドされていません

    ノート:

    インタープリタの名前は、databasename_low、databasename_mediumおよびdatabasename_highという形式で、インタープリタ・バインディング順序の名前と同じです。
    この例では、インタープリタ名は次のとおりです。
    • adwp_low % sql(default),%script, %python, %r, %conda
    • adwp_medium % sql(default),%script, %python, %r, %conda
    • adwp_high % sql(default), %script,%python, %r, %conda
    • md %md(default)

    図5-8 インタープリタ・バインディング

    インタープリタ・バインディング
    リストの最初のPythonインタープリタは、ノートブック内のすべてのPythonパラグラフを実行するために使用されます。たとえば、lowバインディングが選択されている場合、すべてのPythonパラグラフはlowバインディングのPythonインタープリタを使用して実行されます。SQLおよびスクリプト・インタープリタ・バインディングを含む他のすべてのパラグラフは、lowデータベース名サービス(adwp_low)を使用して実行されます。いずれかのPythonスクリプトがデータベースに対して問合せを実行する場合、これらの問合せはlowデータベース名サービス(この例ではadwp_low)を使用して実行されます。
  2. ノートブックの特定のパラグラフのインタープリタ・バインディング順序を変更するには:
    • インタープリタを変更するパラグラフまでスクロールします
    • 特定のバインディングがあるインタープリタをコールします
    • パラグラフを実行します
    たとえば、ノートブックの最初のパラグラフに%adwp_mediumと入力して、リソース割当てがmediumのインタープリタをコールし、パラグラフを実行します。この例では、adwpがデータベース名です。
    変更されたインタープリタ・バインディング順序
    インタープリタ・バインディングの変更後、最初のパラグラフはエラーなしで実行されることに注意してください。このノートブックの2番目のパラグラフには、デフォルトのバインディングがあります。
  3. SQL文SELECT SYS_CONTEXT ('USERENV', 'SERVICE_NAME') FROM DUAL;を入力して、このノートブックの最初のパラグラフのインタープリタ・バインディングを検証します
    このSQL文は、mediumバインディングがあるインタープリタに関する次の情報を返します:
    LGKFDTOOBOQK48I_CWDP_medium.adwc.oraclecloud.com
    変更後のパラグラフのインタープリタ・バインディングの検証
    この例では、スクリーンショットに基づいて説明します:
    • LGKFDTOOBOQK48Iはテナント名です
    • CWDPはデータベース名です
    • mediumはサービス名です
    • adwc.oraclecloud.comはドメインです

    ノート:

    このノートブックのそれ以外のパラグラフでは、インタープリタ・バインディングはデフォルトです。ステップ3を実行して、各パラグラフのバインディングを検証できます。
    これで、ノートブックの特定のパラグラフのインタープリタ・バインディングを変更するタスクは完了です。ノートブックのこれ以外のパラグラフには、インタープリタのデフォルト・バインディングが適用されます。

5.10.2 ノートブックのインタープリタ・バインディングの設定

データベースまたはデータ・ソースからデータをフェッチするために、ノートブックをインタープリタにバインドする必要があります。デフォルトのインタープリタ・バインディング・セットが使用可能です。

使用可能なインタープリタ・バインディング・セットが複数ある場合は、その順序を設定できます。インタープリタ・バインディングの順序を設定するには:
  1. 「ノートブック」ページで、インタープリタ・バインディングを設定するノートブックをクリックします。
    ノートブックが編集モードで開きます。
  2. パネル上部にある歯車アイコンをクリックします。
    NBエディタ・オプション
    「設定」ペイン内に、ノートブックのインタープリタ・バインディングのリストが開きます。
  3. インタープリタをドラッグ・アンド・ドロップして、インタープリタ・バインディングを並べ替えます。リスト内の最初のインタープリタがデフォルトです。インタープリタ・バインディングの順序は次のとおりです:
    • 低(デフォルト): データベース内操作(通常はシリアル(非パラレル)実行)のための最小レベルのリソースを提供します。複数のユーザーによるデータベース内同時操作の最大数がサポートされています。優先度の低いインタープリタが、インタープリタ・リストの最も上に表示され、デフォルトになります。
    • 中: 可能な場合は、データベース内操作をパラレルに実行する固定数のCPUを提供します。制限された数の同時ユーザーがサポートされています。通常、プラガブル・データベースに割り当てられたCPU数の1.25倍です。
    • 高: プラガブル・データベースに割り当てられたCPUの数まで、インデータベース操作をパラレルに実行する最高レベルのCPUを提供します。パフォーマンスは最高ですが、サポートされているのはデータベース内同時操作の最小数(通常は3)です。
    これは、インタープリタの最初のバインディング順序です。インタープリタ・バインディングの順序は変更できます。
  4. 「保存」をクリックします。

5.10.3 インタープリタ・バインディングの検証

インタープリタ・バインディングの順序を設定および変更した後は、特定のノートブックでSQL、PL/SQL、RまたはPythonインタープリタを使用しているかどうか、インタープリタ・バインディングを検証できます。SQL文を使用して、ノートブックに関するインタープリタ・バインディング情報を表示および検証します。

Pythonノートブックの場合、インタープリタ・バインディングはすべてのPythonパラグラフに使用されます。

ノート:

Pythonノートブックでは、パラグラフ・レベルでインタープリタ・バインディングを上書きしないでください。
ノートブックのインタープリタ・バインディングを検証するには:
  1. インタープリタ・バインディングを確認するノートブックを開きます。
  2. 次のSQL文を実行します。
    %sql
    SELECT SYS_CONTEXT ('USERENV', 'SERVICE_NAME') FROM DUAL;

    SQL文は、特定のセッションが接続しているサービスの名前を指定します。

  3. 「実行」をクリックします。
    このSQL文は、インタープリタ、バインディングの順序およびサービス名に関する情報を返します。結果がtenantname__databasename_ servicename.domainの形式で表示されます。説明:
    • HDY7RUSKGDMPHN2はテナント名です
    • PDB1はデータベース名です
    • lowはインタープリタ・バインディング順序です
    • adwc.oraclecloud.comはドメイン名です
    インタープリタ・バインディングの検証