0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI Data Flowを使ってオブジェクト・ストレージからADBへデータをロードする -- Part 2

Last updated at Posted at 2023-05-11

本ブログは、オラクル・クラウドの個人シリーズ・ブログの1つです。

初めに

Oracle Cloud Infrastructure(OCI)Data Flowは、Apache Spark ™アプリケーションを実行するためのフルマネージド・サービスです。特に大規模なデータの処理に向きます。

OCIオブジェクト・ストレージ上のファイルを読み込み、Autnomous DBへのデータロード処理を例にして、OCI Data Flowでの実現方法を三回を分けて紹介したいと思います。

  • Part 1: Apache Sparkを使って、ローカル環境でPythonプログラムを実行する方法
  • Part 2 (本文): アプリケーションをOCIへデプロイし、実行する方法
  • Part 3: プライベート・エンドポイントを経由し、ADBへデータをロードする方法。

ステップ

1. 事前準備

1-1. 関連OCIリソースの作成

リソース・タイプ 名前 コメント
コンパートメント PoC 検証用コンパートメント
バケット dataflow-logs データ・ロード・ログの格納先
グループ Data_Flow_Grp 検証用ユーザーを入れる
ポリシー Data_Flow_Policy
Autnomous DB ADW_Data_Flow 接続タイプ:パブリック・アクセス
Computeインスタンス Linux8-Java11-Data-Flow 用途:
1.ローカル環境での動作確認
2. アーカイブファイルの作成

ポリシーのステートメント:

Allow group Data_Flow_Grp to read buckets in compartment PoC
Allow group Data_Flow_Grp to manage dataflow-family in compartment PoC
Allow group Data_Flow_Grp to manage objects in compartment PoC where ALL {target.bucket.name='dataflow-logs', any {request.permission='OBJECT_CREATE', request.permission='OBJECT_INSPECT'}}

1-2. ローカル環境での動作確認

アプリケーションをOCIへデプロイする前、ローカル環境での動作確認を強く推奨します。詳細は、前回(Part 1)の記事をご参照ください。

1-3. Docker のインストールと起動

Docker のインストール

sudo dnf install -y dnf-utils zip unzip
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce --nobest

Docker の起動

[opc@linux8-java11-data-flow ]$ sudo systemctl start docker
[opc@linux8-java11-data-flow ]$ sudo systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service ¨ /usr/lib/systemd/system/docker.service.
[opc@linux8-java11-data-flow ]$

1-4. アーカイブ(archive.zip)の作成

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

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

一時フォルダ(/tmp/shared)を用意してください。requirements.txt(1行のみ)を作成し、関連のJARファイルと共にその下に保存します。

mkdir /tmp/shared
chmod 777 /tmp/shared
echo oci > /tmp/shared/requirements.txt
cp /home/opc/download/ojdbc/ojdbc11.jar  /tmp/shared
cp /home/opc/download/ojdbc/ucp11.jar /tmp/shared
cp /home/opc/download/ojdbc/oraclepki.jar /tmp/shared
cp /home/opc/download/hdfs/third-party/lib/bcpkix-jdk15on-1.70.jar /tmp/shared
cp /home/opc/download/hdfs/third-party/lib/bcprov-jdk15on-1.70.jar /tmp/shared

dockerコマンドでアーカイブを作成します。
コマンド:sudo docker run --rm -v $(pwd):/opt/dataflow --pull always -it phx.ocir.io/oracle/dataflow/dependency-packager:latest -p 3.8

[opc@linux8-java11-data-flow ~]$ cd /tmp/shared
[opc@linux8-java11-data-flow shared]$ ll
total 15452
-rw-r--r--. 1 opc opc  963713 Mar 11 05:01 bcpkix-jdk15on-1.70.jar
-rw-r--r--. 1 opc opc 5867298 Mar 11 05:01 bcprov-jdk15on-1.70.jar
-rw-r--r--. 1 opc opc 6971601 May  7 11:34 ojdbc11.jar
-rw-r--r--. 1 opc opc  490830 May  7 13:02 oraclepki.jar
-rw-rw-r--. 1 opc opc       4 May  7 11:37 requirements.txt
-rw-r--r--. 1 opc opc 1513648 Mar 29 08:57 ucp11.jar
[opc@linux8-java11-data-flow shared]$ sudo docker run --rm -v $(pwd):/opt/dataflow --pull always -it phx.ocir.io/oracle/dataflow/dependency-packager:latest -p 3.8
<中略>
The following jar files will be included in the archive.zip:
/opt/dataflow/bcpkix-jdk15on-1.70.jar
/opt/dataflow/bcprov-jdk15on-1.70.jar
/opt/dataflow/ojdbc11.jar
/opt/dataflow/ucp11.jar
/opt/dataflow/oraclepki.jar
Are you sure you want to put all these jar files(5) into archive.zip? [Y/n]y
<中略>
archive.zip is generated!
[opc@linux8-java11-data-flow shared]$

archive.zipversion.txtの2つファイルが作成されました。archive.zipをOCIオブジェクト・ストレージにアップロードしてください。

OCI-CLIは既にインストールと設定済であれば、次のように実行するとOKです。
コマンド例:oci os object put -bn MyBucket --file archive.zip

2. OCIでアプリケーションの作成と実行

2-1. アプリケーションの作成

OCIメニュー → Analytics & AI → Data Lake → Data Flow → Create application
image.png

アプリケーション名を入力し、Sparkバージョンとシェイプを選択します。

プログラムのタイプ(Python)と置き場所を指定してください。

アーカイブファイルとログの置き場所を指定し、作成ボタンをクリックします。
dataflow-logsというバケットを事前に作成しておく)。

アプリケーション・ログ:oci://<bucket-name>@<Object_Storage_Namespace>

2-2. アプリケーションの実行

アプリケーション詳細画面に、Run (実行)をクリックして、実行を開始します。
image.png
実行する前、シェイプの指定ができますが、この例ではデフォルトのままで進みます。
image.png

ステータス変更:
Accepted (受入れ済) → In progress (進行中) → Succeed (成功)、或いは Failed (失敗)

この例では、受入れ済から進行中まで約10分間かかり、進行中から成功完了までの実行時間(Duration)は、2分21秒でした。
image.png

実行成功後、テーブルの中身を確認します。
image.png

パブリック・アクセスのADBを例にして紹介しました。次回は、プライベート・エンドポイントを経由し、プライベート・サブネットに格納されるADBへロードする方法を紹介したいと思います。

以上です。


関連記事
オラクル・クラウドの個人シリーズ・ブログ
OCI Data Flowを使ってオブジェクト・ストレージからADBへデータをロードする -- Part 1
OCI Data Flowを使ってオブジェクト・ストレージからADBへデータをロードする -- Part 3


OCI データ・フロー・ドキュメント
製品サイト
オフィシャル・ドキュメント
データ・フロー・チュートリアル
データ・フロー・アプリケーションへのサードパーティ・ライブラリの追加

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?