はじめに
機械学習のための統合環境である OCI Data Science と サーバレス Spark 環境を提供する OCI Data Flow は別々のサービスとして独立していて、これまで何の統合もされていませんでしたが、現在では Data Science の Jupyter Notebook と OCI Data Flow の実行環境が連携されています。
これにより OCI Data Flow のサーバレスや動的リソース・アロケーション等の特長を活かしたコスト・コンシャス&効率的な Pyspark Notebook セッションを OCI Data Science から利用できるようになりました。
では、実際にやってみましょう!
準備
ノートブック・セッションから Data Flow を制御するための認可ポリシーを設定する必要があります。
まず動的グループが必要です。
基本形は、
ALL {resource.type = 'datasciencenotebooksession', <追加の条件>}
で、状況に応じて <追加の条件> のところに resource.compartment.id や resource.id を指定します。
そしてこの動的グループに Data Flow を管理する権限を与えます。
allow dynamic-group <ds-dynamic-group> to manage dataflow-family in compartment '<your-compartment-name>'
Data Science ノートブック・セッションを開く
データ・サイエンスのプロジェクトを作成し、その配下にノートブックセッションを作成します。
セッションの詳細画面に「開く」のボタンがありますので、これをクリックします。
そうすると、ブラウザに新しいウィンドウが現れ、Launcher のタブが開きます。
Conda環境のインストール
左側 (Extensions) のメニューから「Environment Explorer」をクリックします。そうすると、インストール可能な Conda 環境がリストされます。
「PySpark 3.2 and Data Flow Python 3.8 CPU」の行を探して、右側メニューから install を行います。
ターミナルのタブが開いてインストールが実行されます。
Jupyter Notebook を開く
Launcher のタブに戻って、Kernels から「Pyspark 3.2 and Data Flow」を選んで Notebook を作成します。
新しい Notebook が作成されました。
OCI Data Flow セッションの作成と利用
次に認証を設定します。ADS(Oracle Accelerated Data Science) SDKを使って Data Flow のAPIを呼び出す際の認証タイプを設定します。今回はリソース・プリンシパルによる認証にします(前述「準備」のところでリソース・プリンシパルによる認証に必要な設定を行いました)。
OCI Data Flow との通信には SparkMagic を利用するので、SparkMagic拡張をロードします。
セッションの作成は %create_session
コマンドで行います。
渡すパラメータは以下のような Json です。
{
"compartmentId": "<compartment_ocid>",
"displayName": "<session_name>",
"language": "PYTHON",
"sparkVersion": "3.2.1",
"driverShape": "VM.Standard.E3.Flex",
"executorShape": "VM.Standard.E3.Flex",
"driverShapeConfig":{"ocpus":1,"memoryInGBs":16},
"executorShapeConfig":{"ocpus":1,"memoryInGBs":16},
"numExecutors": 1,
"type": "SESSION",
"logsBucketUri": "<oci://bucket@namespace/>",
}
では、実行します。
Data Flow 側で確認すると、新しい「実行」が作成され「進行中」のステータスになっていることが分かります。
これで、Notebook から Data Flow の Spark セッションが利用可能となりました。Notebook からは spark, sc の変数が利用可能です。
試しに、PI を計算してみましょう...
セッションのデフォルトのアイドル・タイムアウト値は480分(8時間)ですが、設定変更可能です。手動で停止することもできます。
%stop_session
で停止してみます。
Data Flow のステータスも「Stopped」になりました。
SparkMagic のコマンドは %help
で確認できます。
(おわり)
参考
ブログ:OCI Data Flowサービス内のJupyter notebooksへのアクセス
ドキュメント:データ・フローとデータ・サイエンスの統合
サンプル Notebook:pyspark-data_flow_studio-introduction