1
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]Oracle Autonomous AI DatabaseのData Transformsを活用したOCI Object StorageへのIcebergデータ書き込み

1
Last updated at Posted at 2026-02-02

はじめに

Apache Iceberg(以下、Iceberg)は、多くのデータレイクのユースケースに適しているデータテーブルフォーマットです。 Oracle Autonomous AI DatabaseのData Transforms機能は既存データをIcebergフォーマットへ変換できる便利な機能です。

本検証はOCIのVirtual Machineインスタンス(Ubuntu)に、Apache Gravitino 1.0.1(以下、Gravitino)とPostgreSQL 14をデプロイして、Iceberg Rest Catalogサービスを構築します。Oracle Autonomous AI Lakehouse環境を作成して、テスト用データを準備した後、同環境のData Transforms機能を利用してデータ変換処理を実行し、Oracle Autonomous AI Lakehouse内のテストデータをIcebergフォーマットに変換して、GravitinoのIceberg Rest Catalogに登録し、実データはOCI Object Storageに保存します。

構成図

本検証の構成図は以下です。
image.png
・Virtual Machineインスタンス(Ubuntu):Gravitino 1.0.1とPostgreSQL 14をデプロイして、Iceberg Rest Catalogサービスを構築します。
・Oracle Autonomous AI Lakehouse:Data Transforms機能を利用してデータ変換処理を実行し、Oracle Autonomous AI Lakehouse内のテストデータをIcebergフォーマットに変換して、GravitinoのIceberg Rest Catalogに登録します。
・OCI Object Storage:Iceberg実データを保存します。

環境準備

OCI Object Storageバケットの作成

OCI Object Storageバケットを作成します。作成方法はOCIドキュメントをご参照ください。

Oracle Autonomous AI Lakehouseインスタンス作成

Oracle Autonomous AI Lakehouseインスタンスを作成します。作成方法はOCIドキュメントをご参照ください。こちらのチュートリアルを参考し、検証用データをダウンロードし、ユーザを作成します。検証用データは「Movie_Sales_2020.csv」を使用し、ユーザQTEAMへロードします。

Gravitino Iceberg Rest Catalogサービスの構築

Ubuntuインスタンス作成

作成方法はOCIドキュメントをご参照ください。本手順は、検証目的のためインスタンスをPublic Subnet内に配置します。
Ubuntuインスタンスへログインします。作業ディレクトリを作成します。

sudo mkdir -p /opt/software
cd /opt/software

ネットワーク設定

Gravitino Iceberg Rest Catalog Serviceのデフォルトポートは9001ですが、パブリックエンドポイントを持つAutonomous AI DatabaseのData Transforms機能の仕様により、Gravitino Iceberg REST Catalog Serviceが使用可能なポートは「2484, 1521-1525, 1708, 3306, 80」に限定されています。VCNセキュリティルールで対象ポートを開放します。設定方法はOCIドキュメントをご参照ください。本検証はポート2484を使用します。
Ubuntuインスタンス内のファイアウォール制御が有効になった場合、対象ポートを開放する必要があります。

sudo iptables -L -n | grep 2484
sudo iptables -I INPUT -p tcp --dport 2484 -j ACCEPT
sudo ss -tuln | grep 2484

JDKのインストール

GravitinoはJava実行環境が必要なため、JDKをインストールします。

sudo apt install openjdk-17-jdk -y

PostgreSQLのインストール

Gravitino Iceberg REST Catalog Serviceはメタデータ保存用のバックエンドとしてPostgreSQLまたはMySQLを必要とします。本検証はPostgreSQLをインストールします。データベースiceberg_dbとユーザicebergを作成します。ユーザicebergへ権限を付与します。

sudo apt install postgresql postgresql-contrib -y
sudo -u postgres psql
CREATE DATABASE iceberg_db;
CREATE USER iceberg WITH PASSWORD '*****';
GRANT ALL PRIVILEGES ON DATABASE iceberg_db TO iceberg;
exit

Gravitino 1.0.1のインストール

Apache Gravitinoは、レイクハウス向けオープンソースの統合データカタログで、Icebergなどのテーブルフォーマットに対応し、複数のメタデータを一元管理してデータインフラの運用効率を高めます。本検証はGravitino 1.01を使用します。

cd /opt/software
sudo wget https://downloads.apache.org/gravitino/1.0.1/gravitino-iceberg-rest-server-1.0.1-bin.tar.gz
sudo tar -xzf gravitino-iceberg-rest-server-1.0.1-bin.tar.gz
sudo chown -R ubuntu:ubuntu ./gravitino-iceberg-rest-server-1.0.1-bin

設定ファイルを編集します。

cd ./gravitino-iceberg-rest-server-1.0.1-bin.conf
vi gravitino-iceberg-rest-server.conf

以下のパラメータを設定します。

パラメータ名 設定内容
gravitino.iceberg-rest.httpPort 2484(デフォルトは9001ですが、Data Transformsを実行するAutonomous AI DatabaseがPublic Subnet内に配置した場合、Data Transformsの仕様により、Gravitino Iceberg REST Catalog Serviceが使用可能なポートは「2484, 1521-1525, 1708, 3306, 80」に限定されています。詳細はドキュメントをご参照ください。)
gravitino.iceberg-rest.catalog-backend jdbc
gravitino.iceberg-rest.jdbc-driver org.postgresql.Driver
gravitino.iceberg-rest.uri jdbc:postgresql://127.0.0.1:5432/iceberg_db
gravitino.iceberg-rest.jdbc-user iceberg
gravitino.iceberg-rest.jdbc-password *****
gravitino.iceberg-rest.jdbc-initialize true
gravitino.iceberg-rest.credential-providers s3-secret-key
gravitino.iceberg-rest.s3-access-key-id OCI環境のアクセスキーの取得方法はドキュメントをご参照ください。
gravitino.iceberg-rest.s3-secret-access-key 秘密キーの取得方法はドキュメントをご参照ください。
gravitino.iceberg-rest.io-impl org.apache.iceberg.aws.s3.S3FileIO
gravitino.iceberg-rest.s3-endpoint S3互換URL。\$namespace.compat.objectstorage.$region.oci.customer-oci.com
gravitino.iceberg-rest.s3-region OCI Object Storgeのリージョン(例:ap-tokyo-1)
gravitino.iceberg-rest.s3-path-style-access true
gravitino.iceberg-rest.warehouse Iceberg実データのOCI Object Storage保存先(例:s3://gravitino gravitinoはOCI Object StorageのBucket名)

必要なライブラリをダウンロードします。

  1. postgresql-42.7.8.jar:PostgreSQLのJDBCドライバーで、GravitinoがPostgreSQLと接続してIcebergメタデータを読み書きするために必要なライブラリです。
  2. iceberg-aws-bundle-1.9.2.jar:IcebergのAWS対応総合ライブラリで、OCI Object Storage(S3互換)にIcebergデータを保存・読み出す際の接続・操作機能を提供します。
  3. gravitino-aws-1.0.1.jar:GravitinoのAWS/OCI対応ライブラリで、GravitinoからOCI Object Storageへのアクセス認証・データ連携を実現するための依存パッケージです。
cd /opt/software/gravitino-iceberg-rest-server-1.0.1-bin/libs
sudo wget https://jdbc.postgresql.org/download/postgresql-42.7.8.jar
sudo chown ubuntu:ubuntu postgresql-42.7.8.jar
sudo wget https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-aws-bundle/1.9.2/iceberg-aws-bundle-1.9.2.jar
sudo chown ubuntu:ubuntu iceberg-aws-bundle-1.9.2.jar
wget https://repo1.maven.org/maven2/org/apache/gravitino/gravitino-aws/1.0.1/gravitino-aws-1.0.1.jar
sudo chown ubuntu:ubuntu gravitino-aws-1.0.1.jar

log4j-api-2.24.3.jar及びlog4j-core-2.24.3.jarが存在する場合、Gravitinoは起動できない事象が発生しますので、リネームします。

mv log4j-api-2.24.3.jar log4j-api-2.24.3.jar.org
mv log4j-core-2.24.3.jar log4j-core-2.24.3.jar.org

環境変数を設定します。

sudo vim /etc/profile.d/gravitino.sh
export GRAVITINO_HOME=/opt/software/gravitino-iceberg-rest-server-1.0.1-bin
export PATH=$GRAVITINO_HOME/bin:$PATH
source /etc/profile.d/gravitino.sh

Gravitinoを起動します。

cd $GRAVITINO_HOME/bin
./gravitino-iceberg-rest-server.sh status
./gravitino-iceberg-rest-server.sh start
/opt/software/gravitino-iceberg-rest-server-1.0.1-bin
#####################################################################
#    ____   ____      _ ___     ___ ___  _____  ___  _   _   ___    #
#   / ___| |  _ \    / \ \ \   / / |_ _||_   _||_ _|| \ | | / _ \   #
#  | | __  | |_) |  / _ \ \ \ / /   | |   | |   | | |  \| || | | |  #
#  | |_| | |  _ <  / ___ \ \ V /    | |   | |   | | | |\  || |_| |  #
#   \____| |_| \_\/_/   \_\ \_/    |___|  |_|  |___||_| \_| \___/   #
#                                                   Version: 1.0.1  #
#####################################################################

Data Transformsの実行

ソースADB接続の作成

作成したOracle Autonomous AI Lakehouseのコンソール画面において、「データベース・アクション」→「すべてのデータベース・アクションの表示」をクリックします。
左上のメニューから「データ変換」をクリックします。
image.png
「データ変換」→「接続」→「接続の作成」をクリックします。
こちらのチュートリアルを参考し、ソースADBの接続を作成します。
image.png

ターゲットIceberg Catalogの接続の作成

再度「接続の作成」をクリックし、Gravitino Iceberg Rest Catalogサービスへの接続を作成します。「接続タイプ」を「Apache Iceberg」に選択します。
image.png
「接続の詳細」を設定し、「接続のテスト」をクリックします。

パラメータ 設定値
接続名 任意の接続名
カタログ名 任意のカタログ名
Rest URL http://<Ubuntuインスタンスのpublic ip>:2484/iceberg (「http://」の記述は必須です。)
認証 検証目的のため、Noneに設定

image.png
接続テストが問題なければ、「作成」をクリックします。
image.png

ソースADBの接続及びターゲットIceberg Catalogの接続が作成されました。
image.png

データロードの実行

「プロジェクト」→「プロジェクトの作成」をクリックします。任意のプロジェクト名を入力します。
image.png

作成したプロジェクトの「詳細の表示」をクリックします。
image.png
「データ・ロードの作成」をクリックします。データ・ロード名を設定します。Data Transformsを使用するため、「デプロイメント・タイプ」を「データ変換(バッチ)」に選択します。
image.png
ソース接続は作成したソースADB接続「MovieStream」を選択します。
image.png
ターゲット接続は作成したターゲットIceberg Catalogの接続「APACHE_ICEBERG_CATALOG」を選択します。保存します。
image.png

ソースADBの検証用データが表示されていることを確認します。
image.png

対象データに☑️をつけ、「追加」クリックし、青の「保存」をクリックします。
image.png

データ・ロードが正常に更新されましたあと、緑の「実行」をクリックします。
image.png

データ・ロードが開始されました。データ・ロードステータスをリフレッシュし、状況を確認します。

image.png

数分後、データ・ロードが完了しました。

image.png

OCI Object Storageの実データ確認

ターゲットBucketにネームスペースMovieDataが新規作成されました。
image.png
中には検証データMOVIE_SALES_2020のメタデータ及び実データが作成されました。
image.png

以上の設定により、Data Transformsを使用してOCI Object StorageへIcebergフォーマットのデータを書き込むことが可能になりました。

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