LoginSignup
1
1

More than 1 year has passed since last update.

DatabricksからOracleAutonomousにアクセスしてみた

Last updated at Posted at 2022-08-30

はじめに

Databricksとは統合データ分析プラットフォームで、データの取得、ETL処理、DWH機能、分析、可視化、様々な言語(Python、Scala、R、SQL、Markdown)が使用できます。

今回はDatabricksのCommunity EditionでAlwaysFreeのOracle Autonomous Databaseからデータを取得します。他のAWS、Azure、GCPのDatabricksでも可能となります。

Databricksログイン

Community Editionのdatabricksにログインします。
スクリーンショット 2022-08-28 092245.png

クラスター作成

ログイン後トップ画面に遷移するので、左のメニューから「Compute」をクリックします。
image.png

Create Cluster」をクリックします。
image.png

Cluster Name」を入力して、後はデフォルトのまま「Create Cluster」をクリックします。
image.png

クラスター内での使用モジュール設定

以下を参考にPythonでOracle Databaseにアクセス出来るcx_Oracleの使用を考えていましたが、エラーが発生してしまいます。そのためcx_oracleの後継で、Oracle Client不要で接続出来るpython-oracledbを使用します。

スクリーンショット 2022-08-28 092746.png

クラスター作成完了後、「Libraies」をクリックして「Install new」をクリックします。
image.png

Library Sourceを「PyPI」に選択し、Packageに「oracledb」を入力。「Installボタン」をクリックします。
image.png

これでクラスター内にモジュールのインストールが完了しました。
image.png

Notebook作成

左のメニューから「Create」をクリックし、「Notebook」をクリックします。
image.png

Nameに「ノートブック名」を入力し、「Create」ボタンをクリックします。
image.png

作成されたNotebookのコードに以下を入力します。
image.png

import oracledb

connection = oracledb.connect(user='',password='',dsn='')

with connection.cursor() as cursor:
    try:

        sql = """select systimestamp from dual"""
        for r in cursor.execute(sql):
            print(r)

    except oracledb.Error as e:
        error, = e.args
        print(error.message)
        print(sql)
        if (error.offset):
            print('^'.rjust(error.offset+1, ' '))

Oracle Autonomous Database設定

Autonomous側の設定を行います。
Mutual TLS (mTLS) authentication」の編集をクリックします。OFFにして「変更の保存」をクリックします。
abcd.png

image.png

次に「アクセス制御リスト」の編集をクリックします。
IP表記法タイプ」を「CIDRブロック」に選択し、「」を「0.0.0.0/0」を入力して「変更の保存」をクリックします。

この0.0.0.0/0はすべての通信を許可する設定になります。
開発・本番は指定のIPアドレスを指定して保護するように注意してください。

image.png

DB接続ボタン」をクリックします。
abcd.png

TLS認証」を「TLS」に選択して、接続したい優先度の「接続文字列」のコピーをクリックして他に保存してきます。
スクリーンショット 2022-08-28 102942.png

実行

先ほどコピーした内容をdsnに張り付けて、接続するユーザー、パスワードを入力して▲をクリックして実行します。
スクリーンショット 2022-08-28 103549.png

日付が取得出来れば成功です。
スクリーンショット 2022-08-28 104032.png

参考にさせて頂いたサイト

これで以上となります。
見て頂きありがとうございました。

1
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
1
1