Oracle Cloud Infrastructureでのデータ・フローPySparkアプリケーションのAutonomous Databaseへの接続

イントロダクション

PySparkアプリケーションがAutonomous Database (Autonomous Data WarehouseまたはAutonomous Transaction Processing)にアクセスする必要がある場合は、JDBCドライバをインポートする必要があります。また、PySparkアプリケーションでオブジェクト・ストレージにアクセスする必要がある場合は、ociライブラリをインポートする必要があります。これらのライブラリのいずれもデータ・フローに事前インストールされていません。実行時にアプリケーションで使用できるように調整する必要があります。これを行うには、依存性アーカイブと呼ばれるオブジェクトを作成します。

依存関係アーカイブはOracle Cloud Infrastructure Object Storageにロードされます。オブジェクト・ストレージ内の依存性アーカイブへのリンクを含むデータ・フロー・アプリケーションを指定します。アプリケーションを実行すると、データ・フローによってアーカイブが取得され、PySparkアプリケーションで使用できるようになります。PySparkアプリケーションは、他のPythonプログラムの場合とまったく同様に、Pythonインポート文を使用してライブラリをインポートします。

目的

このチュートリアルを完了すると、archive.zipというファイルに依存性アーカイブがあります。オブジェクト・ストレージおよびAutonomous DatabaseにアクセスするPySparkアプリケーションと依存関係アーカイブを使用できます。

前提条件

このチュートリアルを開始する前に、Dockerをダウンロードしてインストールします。「関連リンク」の項を参照してください。

パッケージ・ツールのDockerイメージをダウンロードします

コマンドラインで、次のコマンドを入力します。

docker pull phx.ocir.io/oracle/dataflow/dependency-packager:latest

JDBCドライバをダウンロードします

Oracle JDBCダウンロード・ページからJDBCドライバをダウンロードします。テナンシに存在するデータベース・バージョンが不明な場合は、19cのドライバをダウンロードします。

バージョン8、ojdbc8-full.tar.gzには、圧縮されたJDBCドライバとコンパニオンJARを使用します。ojdbc11-full.tar.gzをダウンロードしないでください。

次のファイルを抽出し、パッケージャーツールを実行するのと同じディレクトリに置きます。

ojdbc8.jar
oraclepki.jar
osdt_cert.jar
osdt_core.jar
ucp.jar

これらのファイルは、パッケージャ・ツールを実行するディレクトリと同じディレクトリに配置するため、packages.txtファイルを作成する必要はありません。

構成ファイルの作成

requirements.txtファイルを作成します。このファイルには、データ・フローPySparkアプリケーションが依存するライブラリのリストが含まれています。オブジェクト・ストレージに接続するには、ociライブラリが必要です。PySparkアプリケーションでは、必要に応じて他のライブラリを含めることができます。

次の例は、ociライブラリの最新リリースを指定する方法を示しています。

oci

特定のリリースを指定する場合、requirements.txtファイルは次の例のようになります。

oci==2.3.0

ノート:

  1. pysparkおよびpy4jライブラリはデータ・フローによって提供されます。これらのライブラリはrequirements.txtファイルに配置しないでください。
  2. requirements.txtファイルには空白行を含めることができますが、パッケージャは空白行ごとに無効な要件について苦情を言います。

パッケージャーツールを実行します。

パッケージャ・ツールは、ociライブラリとその依存性をダウンロードし、archive.zipというファイルを作成します。また、現在のディレクトリでjarファイルをスキャンします。5つのJDBCドライバ・ファイルが見つかり、それらをarchive.zipに含めるかどうかを尋ねる必要があります。

Windowsの場合:

  1. 管理者として、Windowsのコマンド・プロンプトを開きます。
  2. jarファイルとrequirements.txtファイルがあるディレクトリに移動します。
  3. 次のコマンドを実行します。

    docker run --rm -v %CD%:/opt/dataflow -it phx.ocir.io/oracle/dataflow/dependency-packager:latest
    

LinuxまたはMacの場合:

  1. ターミナルを開きます。
  2. jarファイルとrequirements.txtファイルがあるディレクトリに移動します。
  3. 次のコマンドを実行します。

    docker run --rm -v $(pwd):/opt/dataflow -it phx.ocir.io/oracle/dataflow/dependency-packager:latest
    

ツールが完了したら、archive.zipを開き、その構造を確認します。これは、次の例とよく似ています。

python/lib/python3.6/site-packages/backports
python/lib/python3.6/site-packages/certifi
python/lib/python3.6/site-packages/<...>
java/ojdbc8.jar
java/oraclepki.jar
java/<...>
version.txt

次のステップ

PySparkアプリケーションで依存性アーカイブを使用可能にするには、次の2つの処理を実行する必要があります。

  1. archive.zipファイルをオブジェクト・ストレージのバケットにアップロードします。
  2. オブジェクト・ストレージのarchive.zipファイルにリンクするようにデータ・フロー・アプリケーションを構成します。

その方法の詳細は、Object Storageのドキュメントおよびデータ・フローのドキュメントを参照してください。アーカイブは、必要なPythonアプリケーションと同じObject Storageバケットに含めることができます。

謝辞

さらに学ぶ

docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルでさらに無料の学習コンテンツにアクセスします。さらに、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerにします。

製品ドキュメントは、Oracleヘルプ・センターを参照してください。

その他の学習リソース

docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルでさらに無料の学習コンテンツにアクセスします。さらに、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerにします。

製品ドキュメントは、Oracleヘルプ・センターを参照してください。