LoginSignup
7
1

More than 3 years have passed since last update.

Oracle Cloud Infrastructure Data Scienceを使って、OCI Object StorageとAWS S3のファイルデータにアクセスしてみる

Last updated at Posted at 2020-03-23

本記事の狙い

2020/2に、Oracle Cloud Infrastructure Data Science(OCI-Data Science)がリリースされました。
前回、OCI-Data ScienceからOracle Autonomous Database(ADW)上のデータにクエリしてみたので(Qiita記事:Oracle Cloud Infrastructure Data Scienceを使ってOracle Autonomous Database(ADW)のデータにアクセスしてみる)、本記事では、実際にOCI-Data Scienceを使って、Oracle Cloud Infrastructure Object Storage(OCI-Object Storage)と、AWS S3上のファイルからデータを取得する手順を、実際に実施してみたいと思います。

参考文献

実施に参考になるリンク

手順

以下のような手順で実施します。
1.OCI-Data Scienceの設定
2.OCI-Object Storage上にファイルをおき、OCI-Data Scienceからアクセスする
3.OCI-Data Science上にファイルををおき、OCI-Data Scienceからアクセスする
4.AWS S3上にファイルをおき、OCI-Data Scienceからアクセスする

1.OCI-Data Scienceの設定

上記参考文献の「Oracle Cloud Infrastructure Data Science(OCI-Data Science)を使ってみよう」を参考にOCI-Data Scienceのノートブック環境を構築、設定をします。
手順とおりに実施すれば、それほど難しくないのでは、と思います。

  1. Oracle Cloudの基本的な設定の後に、ノートブック環境を構築します。
  2. getting-started.ipynbを使って、ノートブック環境(JupyerLab)の初期作業を行います。

2.OCI-Object Storage上にファイルをおき、OCI-Data Scienceからアクセスする

OCI-Data Scienceの中には、/home/datascience/ads-examples 配下のディレクトリに、多くのサンプルノートブックファイルが存在します。
これらサンプルファイルで、基本的な使い方は大体網羅されていますが、今回はその中の一つ、ads_loading_data-2.ipynb というサンプルファイルを使います。
このサンプルノートブックの順序に従ってやれば、大体できるようになっています。

a.OCI-Object Storageにファイルをおく

  • 左のナビゲートから、オブジェクト・ストレージを選択します。
  • 「バゲットの作成」ボタンから、バゲットを作成します。(例:bucket-20200323-2255)
  • バゲットができたら、「オブジェクトのアップロード」ボタンから、ファイルをアップロードします。(例:Purchase_Item.csv) image.png

b.OCI-Data Scienceからファイルにアクセスする

OCI-Data Scienceのノートブック環境から、ads_loading_data-2.ipynb を開きます。
image.png

必要なライブラリを読み込みます。

import pandas as pd
import numpy as np

import warnings
warnings.filterwarnings('ignore')

import logging
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.ERROR)

from ads.dataset.factory import DatasetFactory
from ads.dataset.dataset_browser import DatasetBrowser

OCI-Object Storageへの接続にあたっては、OCI configuration fileの設定が必要ですが、こちらは、getting-started.ipynbを使って、先に設定しておく必要があります。参考文献の「Oracle Cloud Infrastructure Data Science(OCI-Data Science)を使ってみよう」を参考にOCI-Data Scienceのノートブック環境を構築、設定しておいてください。

実際にOCI-Object Storage上のデータにアクセスしてみます。
OCI-Object Storage上のファイルにアクセスするには、ADSに含まれるDatasetFactory.openを使って、oci://<bucket-name>/<file-name>のように指定します。

以下のように記載します。

ds_oci = DatasetFactory.open("oci://bucket-20200323-2255/Purchase_Item.csv", 
                         storage_options={"config":"~/.oci/config", "profile":"DEFAULT"}, delimiter=",")

以上です。
OCI configuration fileを利用し、CSVファイルをカンマ区切りで読み込んでいます。
正常に取得できたか、確認してみます。

ds_oci.head()

image.png

きちんとOCI-Object Storage上のファイルからデータが取得されています。
簡単ですね。

3.OCI-Data Science上にファイルをおき、OCI-Data Scienceからアクセスする

ads_loading_data-2.ipynb の中には、Local File Storageという、OCI-Data Scienceのノートブック環境上にファイルをおいてアクセスする方法も紹介されているのでやってみます。

a.OCI-Data Science上にファイルをおく

/home/datascience/ads-examples/dataディレクトリ配下には、デフォルトでサンプルデータが置いてあります。
同じようにデータをこのディレクトリ(もしくは適当なディレクトリ)に置きます。ファイルのアップロードには、JupyterLabのアップロードボタンを利用すると便利です。
image.png

b.OCI-Data Scienceからファイルにアクセスする

今回はads_loading_data-2.ipynbにあるとおり、/home/datascience/ads-examples/dataディレクトリ配下に、デフォルトで存在するサンプルデータを利用します。
この場合も、ADSに含まれるDatasetFactory.openを使って、以下のように記載します。

ds_ocids = DatasetFactory.open("/home/datascience/ads-examples/data/multiclass_fk_10k.csv")

確認してみます。

ds_ocids.head()

image.png

うむ。
難しくないですね。

c.OCI-Data Science上に新規ファイルを作成し、データをロードする

今度は逆に、Notebook上のデータを使って、OCI-Data Science上のノートブック環境に新規ファイルを作成し、上記で使用したds_ocidsのデータをロードしてみます。
この場合は、ADSDatasetに含まれる、to_csv()メソットを利用します。

import os
# Generate CSV of our data
[ds_link] = ds_ocids.to_csv("./data/test_multiclass.csv")

確認します。
確かに新規ファイルが作成され、データがファイルにロードされていますね。
image.png

4.AWS S3上にファイルをおき、OCI-Data Scienceからアクセスする

次に、AWS S3上のデータに、OCI-Data Scienceからアクセスしてみます。

a.AWS S3にファイルをおく

  • S3上にバゲットを作成し、ファイルをアップします。 image.png

OCI-Data Scienceからアクセスするには、アクセスキーID、シークレットアクセスキーが必要となります。
参考文献「AWSアクセスキー作成」を参考にしながら、以下を実施します。

  • グループ作成
  • ユーザー作成
  • アクセスキーID、シークレットアクセスキーIDの確認

また、バケットへのエンドポイントURLを確認しておきます。S3上のファイル詳細のオブジェクトURLに記載あります。(もっといい確認方法があるかもしれません、、、)
例:https://<バケット名>.s3-ap-northeast-1.amazonaws.com

b.OCI-Data Scienceからファイルにアクセスする

AWS S3上のファイルにアクセスする場合も、OCI-Object Storageと同様に、ADSに含まれるDatasetFactory.openを使って、oci://<bucket-name>/<file-name>のように指定します。
以下のように記載します。

aws_key = '<上記で確認したアクセスキーID>'
aws_secret = '<上記で確認したシークレットアクセスキーID>'
ds_s3 = DatasetFactory.open("s3://<バケット名>/<ファイル名>", storage_options = {
    'key': aws_key,
    'secret': aws_secret,
    'client_kwargs': {
            "endpoint_url": "<エンドポイントURL>"
    }
})

確認してみます。

ds_s3.head()

確かに、無事取得できました。
image.png

これでAWS S3上のデータを使って、OCI-Data Science上でデータ分析を実施したり、OCI-Object StorageとAWS S3上のデータを結合してOCI-Data Scienceで利用したり、分析の幅が広がりますね。

終わりに

今回は、OCI-Data Scienceにサンプルとして含まれる、ads_loading_data-2.ipynb をベースに、OCI-Data Scienceから、OCI-Object Storageと、AWS S3上のファイルにアクセスし、データを取得してみました。

またこの方法以外にもADSを使って、様々なデータソースからデータを取得する方法が、サンプルノートブックや、ADSのドキュメントの「Loading Data」に記載しているので参考にしてみてください。

OCI-Data Scienceは、最大30日間300$分の無償クレジットが使えるOracle Free Trialの、対象サービスですので、ぜひ実際に使ってみることをおすすめします。

Let's Enjoy Data Science!

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1