はじめに
Oracle Cloud Infrastructure Data Scienceでノートブック・セッションを作成し、OCI Object StorageのCSVファイルの取り込み、Autonomous Databaseの表データの取得を実施してみた。
作業ステップ
- 前提条件の設定
- プロジェクトの作成
- ノートブック・セッションの作成
- OCI Object Storage上のCSVファイルの取り込み
- Autonomous Databaseの表データの取得
前提条件の設定
OCI Webコンソールメニューから「アナリティクスとAI」「データ・サイエンス」を選択
ステップ1) VCNとサブネットの作成
仮想クラウド・ネットワーク > VCNウィザードの起動 > 「インターネット接続性を持つVCN」オプションを使ってVCNを作成。
(事前構成済のサービス管理VCNおよびサブネットの利用も可能)
ステップ2) 動的グループの作成
次の一致ルールをもつ動的グループを作成、
ALL { resource.type = 'datasciencenotebooksession' }
ステップ3) ポリシーの作成
次を作成
3.1 サービス・ポリシー
allow service datascience to use virtual-network-family in tenancy
3.2 非管理者ユーザー・ポリシー
allow group to use virtual-network-family in tenancy
allow group to manage data-science-family in tenancy
3.3 動的グループ・ポリシー
allow dynamic-group to manage data-science-family in tenancy
プロジェクトの作成
OCI Webコンソールメニューから「アナリティクスとAI」「データ・サイエンス」を選択
「プロジェクトの作成」をクリック
ノートブック・セッションの作成
プロジェクトの詳細画面で「ノートブック・セッションの作成」をクリック
「名前」を入力
「シェイプ」を選択
「ネットワーキング・リソース」で作成したVCNを使用する場合は、「カスタム・ネットワーキング」を選択し、VCN/サブネットを選択。
事前構成済のサービス管理VCNおよびサブネットを使用する場合は、「デフォルト・ネットワーキング」を選択
「作成」をクリック
※ 3分程度で作成完了
サポートされているコンピュート・シェイプ
シェイプ | OCPU | メモリ(GB) |
---|---|---|
VM.Standard.E3.Flex | 1–64 | 1-1024 (OCPU数に依存) |
VM.Standard.E4.Flex | 1–64 | 1-1024 (OCPU数に依存) |
VM.Standard3.Flex | 1–32 | 1-512 (OCPU数に依存) |
VM.Optimized3.Flex | 1–18 | 1-256 (OCPU数に依存) |
VM.Standard2.1 | 1 | 15 |
VM.Standard2.2 | 2 | 30 |
VM.Standard2.4 | 4 | 60 |
VM.Standard2.8 | 8 | 120 |
VM.Standard2.16 | 16 | 240 |
VM.Standard2.24 | 24 | 320 |
そのほか GPUシェイプの選択も可能
ノートブックを開く
サンプルノートブックの確認
「Notebook Explorer」からサンプルのノートブックを参照可能
「Notebook Explorer」のフィルタに「autonomous database」を入力
「Loading Data With Pandas & Dask」を参照
OCI Object Storage上のCSVファイルの取り込み
「Python [conda env:root] *」 の「Create Notebook」を選択
ノートブックで以下の入力
必要なライブラリのインストール
!pip install -U oracle-ads
!pip install geopandas
!pip install datefinder
ライブラリのインポートとリソースプリンシパル認証
import ads
import logging
import numpy as np
import os
import pandas as pd
from ads.dataset.factory import DatasetFactory
from os import path
import ads
ads.set_auth(auth='resource_principal')
OCI Object Storageのnamespace名、バケット名、オブジェクト名(CSVファイル)を指定して CSVファイルを読み込み
namespace = "<namespace名>"
bucket_name = "<バケット名?"
file_name = "<オブジェクト名?"
df = pd.read_csv(
f"oci://{bucket_name}@{namespace}/{file_name}",
storage_options=ads.common.auth.default_signer(),
)
データセットの確認
df.head()
Name PClass Age Sex Survived
0 Allen, Miss Elisabeth Walton 1st 29.00 female 1
1 Allison, Miss Helen Loraine 1st 2.00 female 0
2 Allison, Mr Hudson Joshua Creighton 1st 30.00 male 0
3 Allison, Mrs Hudson JC (Bessie Waldo Daniels) 1st 25.00 female 0
4 Allison, Master Hudson Trevor 1st 0.92 male 1
ds = DatasetFactory.from_dataframe(df)
ds.show_in_notebook()
python SDKを使った認証の場合
上述のリソースプリンシパルのかわりにPython SDKを使った認証も可能
ノートブックLauncher から「Terminal」を開き
$ oci setup config
でコンフィグを設定し、以下で認証
import ads
import logging
import numpy as np
import os
import pandas as pd
from ads.dataset.factory import DatasetFactory
from os import path
import oci
from oci.data_science import DataScienceClient
rps = oci.auth.signers.get_resource_principals_signer()
dsc = DataScienceClient(config={}, signer=rps)
Autonomous Databaseの表データの取得
必要なライブラリのインストール
!pip install -U oracle-ads
!pip install geopandas
!pip install datefinder
Autonomous Databaseに接続
Walletファイル名、Databaseユーザ名、パスワード、サービス名を指定
connection_parameters = {
"user_name": "<ユーザ名>",
"password": "<パスワード>",
"service_name": "adb_low",
"wallet_location": "<Walletファイル名>",
}
SELECT文の実行
import pandas as pd
import ads
df = pd.DataFrame.ads.read_sql(
"SELECT * FROM SH.SALES",
connection_parameters=connection_parameters,
)
データの確認
df.head()
PROD_ID CUST_ID TIME_ID CHANNEL_ID PROMO_ID QUANTITY_SOLD AMOUNT_SOLD
0 13 524 1998-01-20 2 999 1.0 1205.99
1 13 2128 1998-04-05 2 999 1.0 1250.25
2 13 3212 1998-04-05 2 999 1.0 1250.25
3 13 3375 1998-04-05 2 999 1.0 1250.25
4 13 5204 1998-04-05 2 999 1.0 1250.25
from ads.dataset.factory import DatasetFactory
import pandas as pd
ds = DatasetFactory.from_dataframe(df)
ds.show_in_notebook()
おわりに
OCI Data Scienceでノートブック・セッションを作成し、
パブリックIPアドレスアクセスするOCI Object Storage、Autonomous Databaseからデータを取得してみました。