9.2.12 Apache Iceberg
Apache Icebergは、非常に大規模な分析表のための高パフォーマンスの表形式です。Apache Icebergは、Spark、Trino、Flink、Presto、Hive、Impalaなどのエンジンが同時に同じ表を安全に操作できるようにしながら、SQL表の信頼性およびシンプルさをGG for DAAにもたらします。
9.2.12.1 詳細な機能
Oracle GoldenGate Iceberg Replicatは、GoldenGate証跡レコードをIceberg表にレプリケートできます。
Icebergのオープン表形式ファイルは、ローカル・ファイル、AWS Simple Storage Service (S3)、Google Cloud Storage (GCS)またはAzure DataLake Storage (ADLS)に書き込むことができます。
- SQLエンジンを使用しないレプリケーション
- Icebergファイル形式
- Icebergカタログ
- Iceberg仕様
- 削除ファイルとMerge-On-Read (MoR)
- 操作のサポート
- 圧縮更新の処理
- INSERTALLRECORDSのサポート
- 操作集計
- 自動表作成
- Icebergメタデータ・プロバイダ
- Iceberg識別子フィールド
- 主キーの更新と切捨て
親トピック: Apache Iceberg
9.2.12.1.1 SQLエンジンを使用しないレプリケーション
Oracle GoldenGate Iceberg Replicatプロセスでは、データをIceberg表にレプリケートするのにSQLエンジンは必要ありません。
Iceberg Java SDKとともにオブジェクト・ストレージ固有のJava SDKを使用して、データをIceberg表に書き込みます。
親トピック: 詳細な機能
9.2.12.1.2 Icebergファイル形式
Icebergデータファイルおよび削除ファイルのデフォルトのファイル形式はParquetです。
- Parquet (デフォルト)
- Avro
- ORC
親トピック: 詳細な機能
9.2.12.1.3 Icebergカタログ
Oracle GoldenGateでは、次のIcebergカタログをサポートしています:
- Hadoopカタログ
- Nessieカタログ
- AWS Glueカタログ
- Polarisカタログ
- RESTカタログ
- JDBCカタログ
親トピック: 詳細な機能
9.2.12.1.4 Iceberg仕様
Oracle GoldenGateでは、Iceberg仕様バージョン2に従ってデータファイルおよび削除ファイルを生成します。
https://iceberg.apache.org/spec/#version-2-row-level-deletesを参照してください
親トピック: 詳細な機能
9.2.12.1.5 削除ファイルとMerge-On-Read (MoR)
Oracle GoldenGateでは、UPDATE
およびDELETE
操作用にIceberg削除ファイルを生成します。
したがって、Iceberg表プロパティwrite.update.mode
は常にmerge-on-read
に設定されます。
SQLエンジンでは、Oracle GoldenGateによってレプリケートされた表を問い合せるためにmerge-on-read
をサポートする必要があります。
Icebergでは、次の2つのタイプの削除ファイルをサポートしています:
- 等価削除: 削除されたレコードは、削除ファイルに指定された列の値の等価性によって識別されます。
- 位置削除: 削除されたレコードは、Icebergデータファイル内のレコードの位置によって識別されます。
現在のリリースのOracle GoldenGateでは、Iceberg
等価削除
を使用してIceberg表からレコードを削除します。これにより、Icebergデータファイル内の行の位置を検索せずにレコードを削除できます。
ノート:
Iceberg位置削除
を必要とするユースケースについては、Oracleサポートにお問い合せください。
親トピック: 詳細な機能
9.2.12.1.6 操作のサポート
Icebergイベント・ハンドラでは、次の操作をサポートしています:
INSERT
: 挿入操作用にIcebergデータファイルを生成します。UPDATE
: 更新操作用にIcebergデータファイルおよび削除ファイルを生成します。DELETE
: 削除操作用にIceberg削除ファイルを生成します。TRUNCATE
: ターゲット表を切り捨てるための条件を常にtrue
として、Iceberg削除ファイルを生成します。この操作では、データファイルなしで空のIcebergスナップショットが作成されます。
親トピック: 詳細な機能
9.2.12.1.7 圧縮更新の処理
Oracle GoldenGate証跡ファイルの圧縮更新レコードには、キー列および変更された列の値が含まれています。
非圧縮更新レコードには、すべての列の値が含まれています。
Oracle GoldenGate証跡には、圧縮更新レコードまたは非圧縮更新レコードを含めることができます。デフォルトのExtract構成では、圧縮更新が証跡ファイルに書き込まれます。
更新操作で欠落している列値がある場合、Replicatは異常終了します。
この動作は、Replicatプロパティ・ファイルでパラメータgg.eventhandler.iceberg.abendOnMissingColumns=false
を設定することでオーバーライドできます。
パラメータがfalse
に設定されている場合、Replicatは、Iceberg表の欠落している列の以前の値を問い合せて、圧縮更新を処理します。
親トピック: 詳細な機能
9.2.12.1.7.1 スパース更新での欠落値の検索
欠落値の検索はコストの高い操作であり、Replicatプロセスのパフォーマンスに影響を与える可能性があります。
デフォルトでは、Oracle GoldenGateは10分ごとにレコードをマイクロ・バッチでIcebergに書き込みます。
表のいずれのマイクロバッチにも、何百万もの行が含まれている可能性があります。
マイクロ・バッチは、同時スレッド内のすべてのターゲット表に対して処理されます。
したがって、十分なJVMヒープ・メモリーをReplicatプロセスに割り当てることが重要です。
検索は、更新操作に1つ以上の欠落値が含まれる行に対してのみ実行されます。
Oracle GoldenGateでは、ターゲット表を自動的に作成します。Oracle GoldenGate Replicatでは、表の自動作成時にすべての識別子(キー)列に対してIcebergメトリック(最小/最大値)の作成を有効にします。
メトリックは、Icebergメタデータ・ファイルに格納されます。
Icebergメトリックは、UPDATE
操作における欠落値の検索を高速化するのに役立ちます。
親トピック: 圧縮更新の処理
9.2.12.1.8 INSERTALLRECORDSのサポート
Icebergイベント・ハンドラでは、INSERTALLRECORDS
パラメータをサポートしています。https://docs.oracle.com/en/middleware/goldengate/core/21.3/reference/insertallrecords.html#GUID-A1019C40-97BE-437B-9D80-7C99A9A6DB8Eを参照してください。Replicatパラメータ・ファイル(prm
)でINSERTALLRECORDS
パラメータを設定します。
このプロパティを設定すると、Replicatプロセスに、Icebergデータファイルを生成し、操作データをIcebergターゲット表の最後に追加するように指示されます。
親トピック: 詳細な機能
9.2.12.1.9 操作集計
集計操作は、同じ行に対する複数の操作をしきい値に基づいて単一の出力操作に集計(マージ/圧縮)するプロセスです。
操作レコードは、インメモリーで集計されます。
gg.handler.iceberg.fileRollInterval
プロパティを使用して適用間隔の頻度をチューニングできます。デフォルト値は15m
(15分)に設定されます。
Replicatプロセスでは、集計された操作用にIcebergデータファイルおよび削除ファイルを生成します。
親トピック: 詳細な機能
9.2.12.1.11 Icebergメタデータ・プロバイダ
Icebergの新しいメタデータ・プロバイダが、Icebergターゲット表のメタデータを取得するために実装されています。
Icebergメタデータ・プロバイダは、Replicatプロセスによって自動構成および有効化されます。
親トピック: 詳細な機能
9.2.12.1.12 Iceberg識別子フィールド
Iceberg表の識別子フィールドは、Iceberg表の行を一意に識別するために使用されます。
Oracle GoldenGateでは、自動表作成時にキー列をIceberg識別子フィールドにマップします。
ノート:
現在のリリースでは、識別子フィールドのないIceberg表はサポートされていません。親トピック: 詳細な機能
9.2.12.1.13 主キーの更新と切捨て
- 列値が欠落している主キーの更新により、フラッシュ間隔の前にファイルがIceberg表にフラッシュされます。
これにより、主キーの更新操作用のデータファイルおよび削除ファイルが小規模になる可能性があります。
頻繁に主キーを更新するワークロードまたは表の場合、非圧縮更新レコードを使用した証跡ファイルの生成をお薦めします。
また、Oracleソースから生成された証跡に対して
gg.validate.keyupdate=true
を設定することをお薦めします。キー列が変更されていない場合でも、主キー更新操作を生成するという既知の問題がOracle Extractにあります。
- 切捨て操作により、フラッシュ間隔の前にファイルがIceberg表にフラッシュされます。
親トピック: 詳細な機能
9.2.12.2 構成
Icebergレプリケーション・プロパティの構成は、Replicatプロパティ・ファイルに格納されます。
- 自動構成
- Iceberg Nessieカタログの構成
- Iceberg AWS Glueカタログの構成
- Iceberg Polarisカタログの構成
- Iceberg RESTカタログの構成
- Iceberg JDBCカタログの構成
- Iceberg Hadoopカタログの構成
親トピック: Apache Iceberg
9.2.12.2.1 自動構成
Icebergレプリケーションでは、ファイル・ライター・ハンドラやターゲットIcebergイベント・ハンドラなどの複数のコンポーネントを構成します。
自動構成機能を使用すると、手動構成が最小限になるように、これらのコンポーネントを自動構成できます。
自動構成によって変更されたプロパティも、ハンドラのログ・ファイルに記録されます。
自動構成でIcebergターゲットにレプリケートできるようにするには、パラメータgg.target=iceberg
を設定します。
親トピック: 構成
9.2.12.2.1.1 ファイル・ライター構成
ファイル・ライター・ハンドラ名はiceberg
という値に事前設定されており、そのプロパティはIcebergに必要な値に自動的に設定されます。
親トピック: 自動構成
9.2.12.2.1.2 Icebergイベント・ハンドラ構成
Icebergイベント・ハンドラ名は、値iceberg
に事前設定されています。
このトピックでは、Icebergイベント・ハンドラで使用可能な構成プロパティの詳細を示します。必須プロパティは、使用しているIceberg構成に一致するように変更する必要があります。
- 共通のIcebergプロパティ
- Icebergの共通依存性
- AWS S3 (s3://スキーム)に書き込むためのAWS Java SDK依存性
- AWS S3 (s3a://スキーム)に書き込むためのHadoop AWS SDK依存性
- Google Cloud Storage (GCS)に書き込むためのHadoop Google Cloud Storage SDK依存性
- Google Cloud Storage (GCS)に書き込むためのGoogle Cloud Storage SDK依存性
- Azure Data Lake (ADLS)に書き込むためのHadoop Azure SDK依存性
親トピック: 自動構成
9.2.12.2.1.2.1 共通のIcebergプロパティ
Icebergは、複数のカタログおよびオブジェクト・ストアと連携するように構成できます。
共通プロパティは次のとおりです:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.warehouseLocation |
オプション | 文字列値。 | なし | オブジェクト・ストレージ・スキームを除いたIcebergウェアハウスの場所へのディレクトリ・パス。例: /path/to/warehouse 。これは、hadoop カタログを使用する場合、必須プロパティです。他のIcebergカタログの場合、ウェアハウスの場所にはカタログ固有の要件があります。
|
gg.eventhandler.iceberg.fileRollInterval |
オプション | デフォルトの測定単位はミリ秒です。ms、s、m、hを、それぞれミリ秒、秒、分または時間を表すように指定できます。有効な値は、10000、10000ms、10s、10m、1.5hなどです。0以下の値を指定すると、ファイルのローリング・オン時間がオフになります。 | 15m |
このパラメータにより、データがIcebergウェアハウスにプッシュされる頻度を決めます。この値が大きいほど、Replicatプロセスのメモリーに格納する必要があるデータが多くなるため、注意して使用してください。
ノート: このパラメータは慎重に使用してください。そのデフォルト値(15m )を増やすと、Replicatの内部メモリーに格納されるデータの量が増えます。これにより、メモリー不足エラーが発生し、メモリー不足になるとReplicatが停止する可能性があります。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
Icebergオブジェクト・ストレージの場所を示すウェアハウス・スキーム。有効な値: file:// 、gs:// , s3:// 、s3a:// 、abfss:// 。詳細は、「ファイル・システム・スキーム」を参照してください。
|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
Icebergカタログ・タイプ。有効な値: hadoop 、jdbc 、nessie 、rest 、glue 、polaris 。
|
gg.eventhandler.iceberg.fileFormat |
オプション | parquet、orcまたはavro。 | parquet |
ターゲット表で使用されるIceberg表のファイル形式。サポートされているファイル形式: Parquet、AvroおよびORC。 |
gg.eventhandler.iceberg.icebergTableProperties |
オプション | 文字列値。 | なし | ターゲット表に設定する追加のIceberg表プロパティを指定する表プロパティ・ファイルへのパス。 |
gg.eventhandler.iceberg.abendOnMissingColumns |
オプション | true またはfalse 。
|
true |
true に設定し、UPDATE 操作に欠落値が含まれる場合、Replicatは異常終了します。false に設定すると、UPDATE 操作で列値が欠落している場合でも、Replicatは異常終了しません。欠落している列値は、ターゲット表の問合せによって読み取られます。この検索は、Replicatプロセスのパフォーマンスに影響を与える可能性があります。
|
gg.eventhandler.iceberg.abendOnSchemaChanges |
オプション | true またはfalse |
true |
true に設定し、スキーマの変更が検出される場合、Replicatプロセスは異常終了します。ユーザーは、ターゲット・スキーマを手動で更新し、構成をfalse に設定して続行できます。false に設定すると、スキーマの変更に関する警告メッセージがログに記録されます。
|
gg.validate.keyupdate |
オプション |
true またはfalse
|
false |
true に設定した場合は、Replicatによってキー更新操作(optype 115)が検証され、キー値が変更されていない場合は通常の更新に訂正されます。
|
親トピック: Icebergイベント・ハンドラ構成
9.2.12.2.1.2.1.1 ファイル・システム・スキーム
gg.eventhandler.iceberg.fileSystemScheme
プロパティは、オブジェクト・ストレージ・スキームを指定するために使用されます。
サポートされているオブジェクト・ストレージ・スキームは次のとおりです:
file://
: ローカル・ファイル・システムgs://
: Google Cloud Storages3://
: AWS S3s3a://
: AWS S3abfss://
: Azure Data Lake Storage
親トピック: 共通のIcebergプロパティ
9.2.12.2.1.2.2 Icebergの共通依存性
共通のIceberg依存性は次のとおりです:
<dependencies> <!-- Common Iceberg dependencies START --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>org.apache.iceberg</groupId> <artifactId>iceberg-arrow</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.apache.iceberg</groupId> <artifactId>iceberg-core</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.apache.iceberg</groupId> <artifactId>iceberg-data</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.apache.iceberg</groupId> <artifactId>iceberg-parquet</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.apache.iceberg</groupId> <artifactId>iceberg-gcp</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.apache.iceberg</groupId> <artifactId>iceberg-aws</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.apache.iceberg</groupId> <artifactId>iceberg-orc</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.apache.iceberg</groupId> <artifactId>iceberg-nessie</artifactId> <version>1.6.1</version> </dependency> <!-- Common Iceberg dependencies END --> </dependencies>
依存性は、DependencyDownloader
ディレクトリのスクリプトdownload_dependencies.sh
を使用してMaven Centralからダウンロードできます。
次のステップを実行します:
- ディレクトリを
DependencyDownloader
に変更します。 - プロキシ構成が必要な場合は、
config_proxy.sh
を編集します。 - スクリプトを実行します:
このスクリプトにより、依存性がダウンロードされ、./download_dependencies.sh xmls/iceberg-common.xml
iceberg-common
ディレクトリに格納されます。gg.classpath
は、次のようにiceberg-common
ディレクトリからの依存性が含まれるように構成できます:gg.classpath=/path/to/DependencyDownloader/dependencies/iceberg-common/*
親トピック: Icebergイベント・ハンドラ構成
9.2.12.2.1.2.3 AWS S3 (s3://スキーム)に書き込むためのAWS Java SDK依存性
s3://
スキームを使用してAWS S3に書き込むためのIceberg依存性を次に示します:
<dependencies> <!-- s3:// scheme dependencies START --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>2.28.6</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>sts</artifactId> <version>2.28.6</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>glue</artifactId> <version>2.28.6</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>url-connection-client</artifactId> <version>2.28.6</version> </dependency> <!-- s3:// scheme dependencies END --> </dependencies>
依存性は、DependencyDownloader
ディレクトリのスクリプトdownload_dependencies.sh
を使用してMaven Centralからダウンロードできます。
次のステップを実行します:
- ディレクトリを
DependencyDownloader
に変更します。 - プロキシ構成が必要な場合は、
config_proxy.sh
を編集します。 - スクリプト:
./download_dependencies.sh xmls/iceberg-aws-java-sdk.xml
を実行します
このスクリプトにより、依存性がダウンロードされ、iceberg-aws-java-sdk
ディレクトリに格納されます。
gg.classpath
: 次のように依存性が含まれるように構成できます。
gg.classpath=/path/to/DependencyDownloader/dependencies/iceberg-aws-java-sdk/*:/path/to/DependencyDownloader/dependencies/iceberg-common/*
親トピック: Icebergイベント・ハンドラ構成
9.2.12.2.1.2.4 AWS S3 (s3a://スキーム)に書き込むためのHadoop AWS SDK依存性
s3a:// scheme
スキームを使用してAWS S3に書き込むためのIceberg依存性を次に示します:<dependencies> <!-- s3a:// scheme dependencies START --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-aws</artifactId> <version>3.4.0</version> </dependency> <!-- s3a:// scheme dependencies END --> </dependencies>
依存性は、DependencyDownloader
ディレクトリのスクリプトdownload_dependencies.sh
を使用してMaven Centralからダウンロードできます。
次のステップを実行します:
- ディレクトリを
DependencyDownloader
に変更します。 - プロキシ構成が必要な場合は、
config_proxy.sh
を編集します。 - スクリプトを実行します:
./download_dependencies.sh xmls/iceberg-hadoop-aws.xml
このスクリプトにより、依存性がダウンロードされ、iceberg-hadoop-aws
ディレクトリに格納されます。
gg.classpath
は、次のように依存性が含まれるように構成できます。
gg.classpath=/path/to/DependencyDownloader/dependencies/iceberg-hadoop-aws/*:/path/to/DependencyDownloader/dependencies/iceberg-common/*
親トピック: Icebergイベント・ハンドラ構成
9.2.12.2.1.2.5 Google Cloud Storage (GCS)に書き込むためのHadoop Google Cloud Storage SDK依存性
<dependencies> <!-- gs:// scheme dependencies START --> <dependency> <groupId>com.google.cloud.bigdataoss</groupId> <artifactId>gcs-connector</artifactId> <version>hadoop3-2.2.22</version> </dependency> <!-- gs:// scheme dependencies END --> </dependencies>
依存性は、DependencyDownloader
ディレクトリのスクリプトdownload_dependencies.sh
を使用してMaven Centralからダウンロードできます。
次のステップを実行します:
- ディレクトリを
DependencyDownloader
に変更します。 - プロキシ構成が必要な場合は、
config_proxy.sh
を編集します。 - スクリプト:
./download_dependencies.sh xmls/iceberg-hadoop-gcs.xml
を実行します
このスクリプトにより、依存性がダウンロードされ、iceberg-hadoop-gcs
ディレクトリに格納されます。
gg.classpath
は、次のように依存性が含まれるように構成できます。
g.classpath=/path/to/DependencyDownloader/dependencies/iceberg-hadoop-gcs/*:/path/to/DependencyDownloader/dependencies/iceberg-common/*
親トピック: Icebergイベント・ハンドラ構成
9.2.12.2.1.2.6 Google Cloud Storage (GCS)に書き込むためのGoogle Cloud Storage SDK依存性
<dependencies> <dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-storage</artifactId> <version>2.37.0</version> </dependency> </dependencies>
依存性は、DependencyDownloader
ディレクトリのスクリプトdownload_dependencies.sh
を使用してMaven Centralからダウンロードできます。
次のステップを実行します:
- ディレクトリを
DependencyDownloader
に変更します。 - プロキシ構成が必要な場合は、
config_proxy.sh
を編集します。 - スクリプトを実行します:
./download_dependencies.sh xmls/iceberg-gcs-java-sdk.xml
このスクリプトにより、依存性がダウンロードされ、iceberg-gcs-java-sdk
ディレクトリに格納されます。
gg.classpath
は、次のように依存性が含まれるように構成できます。gg.classpath=/path/to/DependencyDownloader/dependencies/iceberg-hadoop-gcs/*:/path/to/DependencyDownloader/dependencies/iceberg-common/*
親トピック: Icebergイベント・ハンドラ構成
9.2.12.2.1.2.7 Azure Data Lake (ADLS)に書き込むためのHadoop Azure SDK依存性
<dependencies> <!-- abfss:// scheme dependencies START --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-azure</artifactId> <version>3.4.0</version> </dependency> <!-- abfss:// scheme dependencies END --> </dependencies>
依存性は、DependencyDownloader
ディレクトリのスクリプトdownload_dependencies.sh
を使用してMaven Centralからダウンロードできます。
次のステップを実行します:
- ディレクトリを
DependencyDownloader
に変更します。 - プロキシ構成が必要な場合は、
config_proxy.sh
を編集します。 - スクリプトを実行します:
./download_dependencies.sh xmls/iceberg-hadoop-azure.xml
このスクリプトにより、依存性がダウンロードされ、iceberg-hadoop-azure
ディレクトリに格納されます。
gg.classpath
: 次のように依存性が含まれるように構成できます。
gg.classpath=/path/to/DependencyDownloader/dependencies/iceberg-hadoop-azure/*:/path/to/DependencyDownloader/dependencies/iceberg-common/*
親トピック: Icebergイベント・ハンドラ構成
9.2.12.2.2 Iceberg Nessieカタログの構成
- Nessieカタログの構成とAWS S3 s3://スキーム
- Nessieカタログの構成とAWS S3 s3a://スキーム
- Nessieカタログの構成とGCS gs://スキーム
- Nessieカタログの構成とAzure Data Lake Storage abfss://スキーム
親トピック: 構成
9.2.12.2.2.1 Nessieカタログの構成とAWS S3 s3://スキーム
Nessieカタログとs3://
スキームを使用したAWS S3オブジェクト・ストアの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
nessie |
gg.eventhandler.iceberg.nessieBranch |
オプション | 文字列値。 | main |
Iceberg表メタデータが存在するNessieカタログのブランチ名。 |
gg.eventhandler.iceberg.nessieUri |
必須 | 文字列値。 | なし | Nessieカタログ・エンドポイントURI。例:
. |
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3:// 。
|
gg.eventhandler.iceberg.awsS3Region |
必須 | 文字列値。 | なし | AWS S3バケット・リージョン。例: us-east-2 。
|
gg.eventhandler.iceberg.awsS3Bucket |
必須 | 文字列値。 | なし | Icebergウェアハウスを格納するAWS S3バケット名。 |
gg.eventhandler.iceberg.awsAccessKeyId |
オプション | 文字列値。 | なし | 認証用のAWSアクセス・キーID。 |
gg.eventhandler.iceberg.awsSecretKey |
オプション | 文字列値。 | なし | 認証用のAWSシークレット・アクセス・キー。 |
gg.eventhandler.iceberg.awsSessionToken |
オプション | 文字列値。 | なし | 認証用のAWSセッション・トークン。 |
gg.eventhandler.iceberg.awsRoleArn |
オプション | 文字列値。 | なし | 認証用のAWSロールARN。 |
gg.eventhandler.iceberg.awsS3Endpoint |
オプション | 文字列値。 | なし | AWS S3エンドポイント。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
9.2.12.2.2.1.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- AWS S3 (
s3://
スキーム)に書き込むためのAWS SDK依存性
9.2.12.2.2.1.2 Nessieカタログのサンプル構成とAWS S3 s3://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-aws-java-sdk/*:DependencyDownloader/dependencies/iceberg-common/* gg.eventhandler.iceberg.catalogType=nessie gg.eventhandler.iceberg.nessieBranch=main gg.eventhandler.iceberg.nessieUri=http://<nessie-server>:10001/api/v2 gg.eventhandler.iceberg.fileSystemScheme=s3:// gg.eventhandler.iceberg.awsS3Region=us-east-2 gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket> gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id> gg.eventhandler.iceberg.awsSecretKey=<secret-key> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.2.2 Nessieカタログの構成とAWS S3 s3a://スキーム
Nessieカタログとs3a://
スキームを使用したAWS S3オブジェクト・ストアの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
nessie 。
|
gg.eventhandler.iceberg.nessieBranch |
オプション | 文字列値。 | main |
Iceberg表メタデータが存在するNessieカタログのブランチ名。 |
gg.eventhandler.iceberg.nessieUri |
必須 | 文字列値。 | なし | Nessieカタログ・エンドポイントURI。例: http://<nessie-server>.com:10001/api/v2 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3a:// 。
|
gg.eventhandler.iceberg.awsS3Bucket |
必須 | 文字列値。 | なし | Icebergウェアハウスを格納するAWS S3バケット名。 |
gg.eventhandler.iceberg.awsAccessKeyId |
必須 | 文字列値。 | なし | 認証用のAWSアクセス・キーID。 |
gg.eventhandler.iceberg.awsSecretKey |
必須 | 文字列値。 | なし | 認証用のAWSシークレット・アクセス・キー。 |
gg.eventhandler.iceberg.awsSessionToken |
オプション | 文字列値。 | なし | 認証用のAWSセッション・トークン。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
9.2.12.2.2.2.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- AWS S3 (
s3a://
スキーム)に書き込むためのHadoop AWS SDK依存性
9.2.12.2.2.2.2 Nessieカタログのサンプル構成とAWS S3 s3a://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-aws/*:DependencyDownloader/dependencies/iceberg-common/* gg.eventhandler.iceberg.catalogType=nessie gg.eventhandler.iceberg.nessieBranch=main gg.eventhandler.iceberg.nessieUri=http://<nessie-server>:10001/api/v2 gg.eventhandler.iceberg.fileSystemScheme=s3a:// gg.eventhandler.iceberg.awsS3Region=us-east-2 gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket> gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id> gg.eventhandler.iceberg.awsSecretKey=<secret-key> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.2.3 Nessieカタログの構成とGCS gs://スキーム
Nessieカタログとgs://
スキームを使用したGCSオブジェクト・ストアの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
nessie 。
|
gg.eventhandler.iceberg.nessieBranch |
オプション | 文字列値。 | main |
Iceberg表メタデータが存在するNessieカタログのブランチ名。 |
gg.eventhandler.iceberg.nessieUri |
必須 | 文字列値。 | なし | Nessieカタログ・エンドポイントURI。例: http://<nessie-server>.com:10001/api/v2 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
GCSオブジェクト・ストレージの場所を示すファイル・システム・スキーム: gs:// 。
|
gg.eventhandler.iceberg.gcpStorageBucket |
必須 | 文字列値。 | なし | Icebergウェアハウスを格納するGoogle Cloud Storageバケット名。 |
gg.eventhandler.iceberg.gcpProjectId |
必須 | 文字列値。 | なし | GCSバケットを格納するGoogle Cloudプロジェクトのproject-idを設定します。 |
gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile |
必須 | 文字列値。 | なし | Googleサービス・アカウント・キー・ファイルへのパスを設定します。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
9.2.12.2.2.3.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- Google Cloud Storage (GCS)に書き込むためのHadoop Google Cloud Storage SDK依存性
親トピック: Nessieカタログの構成とGCS gs://スキーム
9.2.12.2.2.3.2 Nessieカタログのサンプル構成とGCS gs://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-gcs/*:DependencyDownloader/dependencies/iceberg-common/* gg.eventhandler.iceberg.catalogType=nessie gg.eventhandler.iceberg.nessieBranch=main gg.eventhandler.iceberg.nessieUri=http://<nessie-server>:10001/api/v2 gg.eventhandler.iceberg.fileSystemScheme=gs:// gg.eventhandler.iceberg.gcpStorageBucket=<gcs-bucket> gg.eventhandler.iceberg.gcpProjectId=<gcp-project-id> gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile=<gcp-service-account-key-file> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
親トピック: Nessieカタログの構成とGCS gs://スキーム
9.2.12.2.2.4 Nessieカタログの構成とAzure Data Lake Storage abfss://スキーム
Nessieカタログとabfss://
スキームを使用したAzure Data Lake Storageの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
nessie 。
|
gg.eventhandler.iceberg.nessieBranch |
オプション | 文字列値。 | main |
Iceberg表メタデータが存在するNessieカタログのブランチ名。 |
gg.eventhandler.iceberg.nessieUri |
必須 | 文字列値。 | なし | Nessieカタログ・エンドポイントURI。例: http://<nessie-server>.com:10001/api/v2 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 |
file:// |
Azure Data Lake Storageの場所を示すファイル・システム・スキーム: abfss:// 。
|
gg.eventhandler.iceberg.azureAccountName |
必須 | 文字列値。 | なし | Icebergウェアハウスのコンテナを含むAzureストレージ・アカウント名。 |
gg.eventhandler.iceberg.azureContainer |
必須 | 文字列値。 | なし | Icebergウェアハウスを格納するAzureストレージ・アカウント・コンテナ名。 |
gg.eventhandler.iceberg.azureAccountKey |
必須 | 文字列値。 | なし | Azureストレージ・アカウント・キー。 |
gg.eventhandler.iceberg.azureBlobEndpoint |
オプション | 文字列値。 | <azureContainer>@<azureAccountName>.dfs.core.windows.net |
Azure Storageサービス・エンドポイント。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
9.2.12.2.2.4.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- Azure Data Lake (ADLS)に書き込むためのHadoop Azure SDK依存性
9.2.12.2.2.4.2 Nessieカタログのサンプル構成とADLS abfss://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-azure/*:DependencyDownloader/dependencies/iceberg-common/* gg.eventhandler.iceberg.catalogType=nessie gg.eventhandler.iceberg.nessieBranch=main gg.eventhandler.iceberg.nessieUri=http://<nessie-server>:10001/api/v2 gg.eventhandler.iceberg.fileSystemScheme=abfss:// gg.eventhandler.iceberg.azureAccountName=<azure-storage-account-name> gg.eventhandler.iceberg.azureContainer=<azure-storage-container> gg.eventhandler.iceberg.azureAccountKey=<azure-storage-account-key> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.2.4.3 Nessieネームスペース
Nessieネームスペースは、Nessieカタログ内のすべての表に対する最上位コンテナです。
Replicatプロセスを開始する前に、表を作成したり表に書き込む前に、既存のネームスペースが必要です。
Nessieネームスペースは、次のようにNessieコマンドライン・プログラム(nessie-cli-<version>.jar
)を使用して作成できます: create namespace QASOURCE;
Nessieネームスペースは、MAP文のGoldenGateスキーマにマップされます。
例: MAP QASOURCE.TCUSTMER, TARGET QASOURCE.TCUSTMER;
9.2.12.2.3 Iceberg AWS Glueカタログの構成
- Iceberg AWS Glueカタログの構成とAWS S3 s3://またはs3a://スキーム
- クラスパスと依存性
- Iceberg AWS Glueカタログのサンプル構成とAWS S3 s3://またはs3a://スキーム
- 表名と大/小文字の区別
親トピック: 構成
9.2.12.2.3.1 Iceberg AWS Glueカタログの構成とAWS S3 s3://またはs3a://スキーム
AWS Glueカタログとs3://
またはs3a://
スキームを使用したAWS S3オブジェクト・ストアの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop | glue。 |
gg.eventhandler.iceberg.awsGlueId |
必須 | 文字列値。 | なし | GlueカタログIDは、数値のAWSアカウントIDです。 |
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// | AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3:// またはs3a:// 。
|
gg.eventhandler.iceberg.awsS3Region |
必須 | 文字列値。 | なし | AWS S3バケット・リージョン。例: us-east-2。 |
gg.eventhandler.iceberg.awsS3Bucket |
必須 | 文字列値。 | なし | Icebergウェアハウスを格納するAWS S3バケット名。 |
gg.eventhandler.iceberg.awsAccessKeyId |
オプション | 文字列値。 | なし | 認証用のAWSアクセス・キーID。 |
gg.eventhandler.iceberg.awsSecretKey |
オプション | 文字列値。 | なし | 認証用のAWSシークレット・アクセス・キー。 |
gg.eventhandler.iceberg.awsSessionToken |
オプション | 文字列値。 | なし | 認証用のAWSセッション・トークン。 |
gg.eventhandler.iceberg.awsRoleArn |
オプション | 文字列値。 | なし | 認証用のAWSロールARN。 |
gg.eventhandler.iceberg.awsS3Endpoint |
オプション | 文字列値。 | なし | AWS S3エンドポイント。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
親トピック: Iceberg AWS Glueカタログの構成
9.2.12.2.3.2 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- AWS S3 (
s3://
)に書き込むためのAWS SDK依存性
親トピック: Iceberg AWS Glueカタログの構成
9.2.12.2.3.3 Iceberg AWS Glueカタログのサンプル構成とAWS S3 s3://またはs3a://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-aws-java-sdk/*:DependencyDownloader/dependencies/iceberg-common/* gg.eventhandler.iceberg.catalogType=glue gg.eventhandler.iceberg.awsGlueId=<aws-acccount-id> gg.eventhandler.iceberg.fileSystemScheme=s3:// #gg.eventhandler.iceberg.fileSystemScheme=s3a:// gg.eventhandler.iceberg.awsS3Region=us-east-2 gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket> gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id> gg.eventhandler.iceberg.awsSecretKey=<secret-key> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
親トピック: Iceberg AWS Glueカタログの構成
9.2.12.2.3.4 表名と大/小文字の区別
AWS Glueカタログでは、小文字の名前のみがサポートされています。
AWS Glueカタログでは、2部構成の表名のみがサポートされています。
GGDAA ReplicatのMAP
文のターゲット表は、Glueデータベース名および表名にマップする必要があります。
例: MAP QASOURCE.TCUSTMER, TARGET "glue_database"."tcustmer";
この例では、glue_database
がGlueデータベース名、tcustmer
がGlue表名です。
親トピック: Iceberg AWS Glueカタログの構成
9.2.12.2.4 Iceberg Polarisカタログの構成
Apache Polarisは、Apache Iceberg用のオープンソースでフル機能のカタログです。
Polarisを設定するための選択肢がいくつかあります:
- SnowflakeがホストするPolaris (https://other-docs.snowflake.com/en/opencatalog/overview)。
-
独自のインフラストラクチャ上のPolaris (https://polaris.apache.org/in-dev/unreleased/quickstart/)。
Polarisカタログの設定には、オブジェクト・ストア(S3/GCS/ADLS)に対する構成および認証が含まれます。
Polarisを使用する場合、Icebergウェアハウスの場所およびオブジェクト・ストアに対する認証は、GoldenGateによって設定されません。
この項の内容は次のとおりです。
- Polarisの共通構成
- Google Cloud Storage (GCS)が設定されたPolarisカタログ
- AWS S3ストレージが設定されたPolarisカタログ
- Azure Data Lake Storage (ADLS)が設定されたPolarisカタログ
- PolarisカタログとGCSストレージ・クラスパスおよび依存性
- PolarisカタログとAWS S3ストレージ・クラスパスおよび依存性
- PolarisカタログとADLSストレージ・クラスパスおよび依存性
- Polarisカタログのサンプル構成
- Polarisネームスペース
親トピック: 構成
9.2.12.2.4.1 Polarisの共通構成
Polarisカタログの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
必須 | 文字列値。 | hadoop |
polaris 。
|
gg.eventhandler.iceberg.polarisCatalogUri |
必須 | 文字列値。 | なし | Polarisカタログ・エンドポイントURI。例: https://<polaris-account>.snowflakecomputing.com/polaris/api/catalog 。 |
gg.eventhandler.iceberg.polarisCatalogName |
必須 | 文字列値。 | なし | Polarisカタログ名。カタログ名は、Polarisカタログ・ネームスペースおよび表のエントリ・ポイントです。 |
gg.eventhandler.iceberg.polarisClientId |
必須 | 文字列値。 | なし | 各Polarisカタログに対する認証および認可に使用されるPolarisプリンシパルのクライアントID。 |
gg.eventhandler.iceberg.polarisClientSecret |
必須 | 文字列値。 | なし | 各Polarisカタログに対する認証および認可に使用されるPolarisプリンシパルのクライアント・シークレット。 |
gg.eventhandler.iceberg.polarisPrincipalRole |
オプション | 文字列値。 | ALL |
Polarisプリンシパルが担うロール。 |
親トピック: Iceberg Polarisカタログの構成
9.2.12.2.4.2 Google Cloud Storage (GCS)が設定されたPolarisカタログ
GOOGLE_APPLICATION_CREDENTIALS
は、Google Serviceアカウント・キー・ファイルへのパスに設定する必要があります。Replicatパラメータ・ファイル(.prm
)に次を追加します:SETENV (GOOGLE_APPLICATION_CREDENTIALS = "/path/to/the/gcp-service-account-json-key.json")
親トピック: Iceberg Polarisカタログの構成
9.2.12.2.4.3 AWS S3ストレージが設定されたPolarisカタログ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.awsS3Region |
必須 | 文字列値。 | なし | PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。AWS S3バケット・リージョン。例: us-east-2 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3:// 。
|
gg.eventhandler.iceberg.awsAccessKeyId |
オプション | 文字列値。 | なし | PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。認証用のAWSアクセス・キーID。 |
gg.eventhandler.iceberg.awsSecretKey |
オプション | 文字列値。 | なし | PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。認証用のAWSシークレット・アクセス・キー。 |
gg.eventhandler.iceberg.awsSessionToken |
オプション | 文字列値。 | なし | PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。認証用のAWSセッション・トークン。 |
gg.eventhandler.iceberg.awsS3Endpoint |
オプション | 文字列値。 | なし | PolarisカタログがAWS S3ストレージを指している場合にのみ必須です。AWS S3エンドポイント。 |
親トピック: Iceberg Polarisカタログの構成
9.2.12.2.4.4 Azure Data Lake Storage (ADLS)が設定されたPolarisカタログ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
PolarisカタログがAzure Data Lake Storageを指している場合にのみ必須です。Azure Data Lake Storageの場所を示すウェアハウス・スキーム: abfss:// 。
|
gg.eventhandler.iceberg.azureAccountName |
必須 | 文字列値。 | なし | PolarisカタログがAzure Data Lake Storageを指している場合にのみ必須です。Icebergウェアハウスのコンテナを含むAzureストレージ・アカウント名。 |
gg.eventhandler.iceberg.azureContainer |
必須 | 文字列値。 | なし | PolarisカタログがAzure Data Lake Storageを指している場合にのみ必須です。Icebergウェアハウスを格納するAzureストレージ・アカウント・コンテナ名。 |
gg.eventhandler.iceberg.azureAccountKey |
必須 | 文字列値。 | なし | PolarisカタログがAzure Data Lake Storageを指している場合にのみ必須です。Azureストレージ・アカウント・キー。 |
gg.eventhandler.iceberg.azureBlobEndpoint |
オプション | 文字列値。 | <azureContainer>@<azureAccountName>.dfs.core.windows.net |
PolarisカタログがAzure Data Lake Storageを指している場合にのみ必須です。Azure Storageサービス・エンドポイント。 |
親トピック: Iceberg Polarisカタログの構成
9.2.12.2.4.5 PolarisカタログとGCSストレージ・クラスパスおよび依存性
PolarisカタログがGCSに書き込むように設定されている場合は、Javaクラスパス(gg.classpath
)に次の依存性を含める必要があります:
- Icebergの共通依存性
- Google Cloud Storage (GCS)に書き込むためのGoogle Cloud Storage SDK依存性
親トピック: Iceberg Polarisカタログの構成
9.2.12.2.4.6 PolarisカタログとAWS S3ストレージ・クラスパスおよび依存性
PolarisカタログがAWS S3に書き込むように設定されている場合は、Javaクラスパス(gg.classpath
)に次の依存性を含める必要があります:
- Icebergの共通依存性
- AWS S3 (
s3://
)に書き込むためのAWS SDK依存性
親トピック: Iceberg Polarisカタログの構成
9.2.12.2.4.7 PolarisカタログとADLSストレージ・クラスパスおよび依存性
PolarisカタログがADLSに書き込むように設定されている場合は、Javaクラスパス(gg.classpath
)に次の依存性を含める必要があります:
- Icebergの共通依存性
- Azure Data Lake Storage (
abfss://
)に書き込むためのHadoop Azure SDKの依存性。
親トピック: Iceberg Polarisカタログの構成
9.2.12.2.4.8 Polarisカタログのサンプル構成
gg.target=iceberg #For catalog using GCS gg.classpath=DependencyDownloader/dependencies/iceberg-gcs-java-sdk/*:DependencyDownloader/dependencies/iceberg-common/* #For catalog using S3 #gg.classpath=DependencyDownloader/dependencies/iceberg-aws-java-sdk/*:DependencyDownloader/dependencies/iceberg-common/* #For catalog using ADLS #gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-azure/*:DependencyDownloader/dependencies/iceberg-common/* gg.eventhandler.iceberg.catalogType=polaris gg.eventhandler.iceberg.polarisCatalogUri=https://<polaris-account>.snowflakecomputing.com/polaris/api/catalog gg.eventhandler.iceberg.polarisCatalogName=<polaris_gcs_catalog> gg.eventhandler.iceberg.polarisClientId=<clientId> gg.eventhandler.iceberg.polarisClientSecret=<clientSecret> gg.eventhandler.iceberg.polarisPrincipalRole=ALL
親トピック: Iceberg Polarisカタログの構成
9.2.12.2.4.9 Polarisネームスペース
Polarisネームスペースは、Polarisカタログ内のすべての表に対する最上位コンテナです。
Replicatプロセスを開始する前に、PolarisネームスペースをそれぞれのPolarisカタログに作成する必要があります。
Polarisネームスペースは、MAP文のGoldenGateスキーマにマップされます。
例: MAP QASOURCE.TCUSTMER, TARGET "polaris_namespace"."tcustmer";
親トピック: Iceberg Polarisカタログの構成
9.2.12.2.5 Iceberg RESTカタログの構成
Icebergでは、カタログ実装用のREST仕様(https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml)を定義します。
Iceberg REST APIを実装するRESTサーバーはいずれもIcebergカタログとして使用できます。
たとえば、PolarisはIceberg REST APIの実装です。
9.2.12.2.5.1 Iceberg RESTカタログの構成
Polarisカタログの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
必須 | 文字列値。 | hadoop |
rest 。
|
gg.eventhandler.iceberg.restCatalogUri |
必須 | 文字列値。 | なし | RESTカタログ・エンドポイントURI。例: https://<polaris-account>.snowflakecomputing.com/polaris/api/catalog 。 |
gg.eventhandler.iceberg.restCatalogProperties |
オプション | 文字列値。 | なし | RESTカタログの追加構成を含むプロパティ・ファイル。 |
親トピック: Iceberg RESTカタログの構成
9.2.12.2.5.2 Polarisに基づいたRESTカタログのサンプル構成
gg.target=iceberg #For catalog using GCS gg.classpath=DependencyDownloader/dependencies/iceberg-gcs-java-sdk/*:DependencyDownloader/dependencies/iceberg-common/* #For catalog using S3 #gg.classpath=DependencyDownloader/dependencies/iceberg-s3/*:DependencyDownloader/dependencies/iceberg-common/* #For catalog using ADLS #gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-azure/*:DependencyDownloader/dependencies/iceberg-common/* gg.eventhandler.iceberg.catalogType=rest gg.eventhandler.iceberg.restCatalogUri=https://<polaris-account>.snowflakecomputing.com/polaris/api/catalog gg.eventhandler.iceberg.restCatalogProperties=/path/to/rest/catalog.properties # Optional configuration for authentication to the object storage. # Some REST implementations do not require a separate authentication to the storage layer. #gg.eventhandler.iceberg.fileSystemScheme=s3:// #gg.eventhandler.iceberg.awsS3Region=<s3-region> #gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket> #gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id> #gg.eventhandler.iceberg.awsSecretKey=<secret-key> #gg.eventhandler.iceberg.fileSystemScheme=abfss:// #gg.eventhandler.iceberg.azureAccountName=<azure-storage-account-name> #gg.eventhandler.iceberg.azureContainer=<azure-storage-container> #gg.eventhandler.iceberg.azureAccountKey=<azure-storage-account-key> #gg.eventhandler.iceberg.fileSystemScheme=gs:// #gg.eventhandler.iceberg.gcpStorageBucket=<gcs-bucket> #gg.eventhandler.iceberg.gcpProjectId=<gcp-project-id> #gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile=<gcp-service-account-key-file>
親トピック: Iceberg RESTカタログの構成
9.2.12.2.5.3 RESTカタログのサンプル・プロパティ・ファイル(Polarisの場合)
warehouse=polaris_s3_catalog credential=<ClientId>:<ClientSecret> scope=PRINCIPAL_ROLE:ALL token-refresh-enabled=true
親トピック: Iceberg RESTカタログの構成
9.2.12.2.6 Iceberg JDBCカタログの構成
一部のJDBC互換データベースを使用して、Icebergカタログ情報を格納できます。
すべてのJDBC互換データベースがIceberg JDBCカタログAPIでサポートされているわけではありません。
ノート:
Databricks JDBCドライバを使用するDatabricksターゲットは、内部的にテストされています。- Iceberg JDBCカタログの構成とfile://スキーム
- Iceberg JDBCカタログの構成とs3a://スキーム
- Iceberg JDBCカタログの構成とgs://スキーム
- Iceberg JDBCカタログの構成とabfss://スキーム
親トピック: 構成
9.2.12.2.6.1 Iceberg JDBCカタログの構成とfile://スキーム
JDBCカタログとfile://
スキームを使用したIcebergストレージとしてのローカル・ファイル・システムの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
jdbc 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
ローカル・ファイル・システムをストレージとして示すファイル・システム・スキーム: file:// 。
|
gg.eventhandler.iceberg.warehouseLocation |
必須 | 文字列値。 | なし | Icebergウェアハウスへのローカル・ディレクトリ・パス。 |
gg.eventhandler.iceberg.jdbcUrl |
必須 | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBC URL。 |
gg.eventhandler.iceberg.jdbcUser |
オプション | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBCユーザー。 |
gg.eventhandler.iceberg.jdbcPassword |
オプション | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBCパスワード。 |
9.2.12.2.6.1.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- Icebergカタログの格納に使用されるデータベースにアクセスするためのJDBCドライバへのパス。
9.2.12.2.6.1.2 Iceberg JDBCカタログのサンプル構成とローカル・ファイル・ストレージfile://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=/path/to/the/jdbc/driver/*:DependencyDownloader/dependencies/iceberg-common/* gg.eventhandler.iceberg.catalogType=jdbc gg.eventhandler.iceberg.jdbcUrl=<jdbc-url> gg.eventhandler.iceberg.jdbcUser=<jdbc-user> gg.eventhandler.iceberg.jdbcPassword=<jdbc-password>
9.2.12.2.6.2 Iceberg JDBCカタログの構成とs3a://スキーム
JDBCカタログとs3a://
スキームを使用したAWS S3オブジェクト・ストアの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
jdbc 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3a:// 。
|
gg.eventhandler.iceberg.warehouseLocation |
必須 | 文字列値。 | なし | Icebergウェアハウスへのローカル・ディレクトリ・パス。 |
gg.eventhandler.iceberg.jdbcUrl |
必須 | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBC URL。 |
gg.eventhandler.iceberg.jdbcUser |
オプション | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBCユーザー。 |
gg.eventhandler.iceberg.jdbcPassword |
オプション | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBCパスワード。 |
gg.eventhandler.iceberg.awsS3Bucket |
必須 | 文字列値。 | なし | Icebergウェアハウスを格納するAWS S3バケット名。 |
gg.eventhandler.iceberg.awsAccessKeyId |
必須 | 文字列値。 | なし | 認証用のAWSアクセス・キーID。 |
gg.eventhandler.iceberg.awsSecretKey |
必須 | 文字列値。 | なし | 認証用のAWSシークレット・アクセス・キー。 |
gg.eventhandler.iceberg.awsSessionToken |
オプション | 文字列値。 | なし | 認証用のAWSセッション・トークン。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
9.2.12.2.6.2.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- AWS S3 (
s3a://
スキーム)に書き込むためのHadoop AWS SDK依存性 - Icebergカタログの格納に使用されるデータベースにアクセスするためのJDBCドライバへのパス。
9.2.12.2.6.2.2 JDBCカタログのサンプル構成とAWS S3 s3a://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-aws/*:DependencyDownloader/dependencies/iceberg-common/*:/path/to/the/jdbc/driver/* gg.eventhandler.iceberg.catalogType=jdbc gg.eventhandler.iceberg.jdbcUrl=<jdbc-url> gg.eventhandler.iceberg.jdbcUser=<jdbc-user> gg.eventhandler.iceberg.jdbcPassword=<jdbc-password> gg.eventhandler.iceberg.fileSystemScheme=s3a:// gg.eventhandler.iceberg.awsS3Region=us-east-2 gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket> gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id> gg.eventhandler.iceberg.awsSecretKey=<secret-key> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.6.3 Iceberg JDBCカタログの構成とgs://スキーム
JDBCカタログとgs://
スキームを使用したGCSオブジェクト・ストアの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
jdbc 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
GCSオブジェクト・ストレージの場所を示すファイル・システム・スキーム: gs:// 。
|
gg.eventhandler.iceberg.warehouseLocation |
必須 | 文字列値。 | なし | Icebergウェアハウスへのローカル・ディレクトリ・パス。 |
gg.eventhandler.iceberg.jdbcUrl |
必須 | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBC URL。 |
gg.eventhandler.iceberg.jdbcUser |
オプション | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBCユーザー。 |
gg.eventhandler.iceberg.jdbcPassword |
オプション | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBCパスワード。 |
gg.eventhandler.iceberg.gcpStorageBucket |
必須 | 文字列値。 | なし | Icebergウェアハウスを格納するGoogle Cloud Storageバケット名。 |
gg.eventhandler.iceberg.gcpProjectId |
必須 | 文字列値。 | なし | GCSバケットを格納するGoogle Cloudプロジェクトのproject-idを設定します。 |
gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile |
必須 | 文字列値。 | なし | Googleサービス・アカウント・キー・ファイルへのパスを設定します。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
9.2.12.2.6.3.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- Google Cloud Storage (GCS)に書き込むためのHadoop Google Cloud Storage SDK依存性
- Icebergカタログの格納に使用されるデータベースにアクセスするためのJDBCドライバへのパス。
9.2.12.2.6.3.2 JDBCカタログのサンプル構成とGCS gs://
スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-gcs/*:DependencyDownloader/dependencies/iceberg-common/*:/path/to/the/jdbc/driver/* gg.eventhandler.iceberg.catalogType=jdbc gg.eventhandler.iceberg.jdbcUrl=<jdbc-url> gg.eventhandler.iceberg.jdbcUser=<jdbc-user> gg.eventhandler.iceberg.jdbcPassword=<jdbc-password> gg.eventhandler.iceberg.fileSystemScheme=gs:// gg.eventhandler.iceberg.gcpStorageBucket=<gcs-bucket> gg.eventhandler.iceberg.gcpProjectId=<gcp-project-id> gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile=<gcp-service-account-key-file> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.6.4 Iceberg JDBCカタログの構成とabfss://スキーム
JDBCカタログとabfss://
スキームを使用したAzure Data Lake Storageの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
jdbc 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
Azure Data Lake Storageの場所を示すファイル・システム・スキーム: abfss:// 。
|
gg.eventhandler.iceberg.warehouseLocation |
必須 | 文字列値。 | なし | Icebergウェアハウスへのローカル・ディレクトリ・パス。 |
gg.eventhandler.iceberg.jdbcUrl |
必須 | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBC URL。 |
gg.eventhandler.iceberg.jdbcUser |
オプション | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBCユーザー。 |
gg.eventhandler.iceberg.jdbcPassword |
オプション | 文字列値。 | なし | Icebergカタログとして使用されるデータベースに接続するためのJDBCパスワード。 |
gg.eventhandler.iceberg.azureAccountName |
必須 | 文字列値。 | なし | Icebergウェアハウスのコンテナを含むAzureストレージ・アカウント名。 |
gg.eventhandler.iceberg.azureContainer |
必須 | 文字列値。 | なし | Icebergウェアハウスを格納するAzureストレージ・アカウント・コンテナ名。 |
gg.eventhandler.iceberg.azureAccountKey |
必須 | 文字列値。 | なし | Azureストレージ・アカウント・キー。 |
gg.eventhandler.iceberg.azureBlobEndpoint |
オプション | 文字列値。 | <azureContainer>@<azureAccountName>.dfs.core.windows.net |
Azure Storageサービス・エンドポイント。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
9.2.12.2.6.4.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- Azure Data Lake (ADLS)に書き込むためのHadoop Azure SDK依存性
- Icebergカタログの格納に使用されるデータベースにアクセスするためのJDBCドライバへのパス。
9.2.12.2.6.4.2 JDBCカタログのサンプル構成とADLS abfss://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-azure/*:DependencyDownloader/dependencies/iceberg-common/*:/path/to/the/jdbc/driver/* gg.eventhandler.iceberg.catalogType=jdbc gg.eventhandler.iceberg.jdbcUrl=<jdbc-url> gg.eventhandler.iceberg.jdbcUser=<jdbc-user> gg.eventhandler.iceberg.jdbcPassword=<jdbc-password> gg.eventhandler.iceberg.fileSystemScheme=abfss:// gg.eventhandler.iceberg.azureAccountName=<azure-storage-account-name> gg.eventhandler.iceberg.azureContainer=<azure-storage-container> gg.eventhandler.iceberg.azureAccountKey=<azure-storage-account-key> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.7 Iceberg Hadoopカタログの構成
Hadoopカタログは、信頼性の高いロック・メカニズムがなく、同時読取り/書込みに影響するため、本番環境での使用はお薦めしません。
Hadoopカタログは、テスト目的でのみ使用されます。
- Iceberg Hadoopカタログの構成とfile://スキーム
- Iceberg Hadoopカタログの構成とs3a://スキーム
- Iceberg Hadoopカタログの構成とgs://スキーム
- Iceberg Hadoopカタログの構成とabfss://スキーム
親トピック: 構成
9.2.12.2.7.1 Iceberg Hadoopカタログの構成とfile://スキーム
Hadoopカタログとfile://
スキームを使用したIcebergストレージとしてのローカル・ファイル・システムの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
hadoop 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
ローカル・ファイル・システムをストレージとして示すファイル・システム・スキーム: file:// 。
|
gg.eventhandler.iceberg.warehouseLocation |
必須 | 文字列値。 | なし | Icebergウェアハウスへのローカル・ディレクトリ・パス。 |
ノート:
この構成は通常、ローカル・ファイル・システムにIceberg表を格納するためのテスト目的で使用されます。9.2.12.2.7.2 Iceberg Hadoopカタログの構成とs3a://スキーム
Hadoopカタログとs3a://
スキームを使用したAWS S3オブジェクト・ストアの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
hadoop 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
AWS S3オブジェクト・ストレージの場所を示すファイル・システム・スキーム: s3a:// 。
|
gg.eventhandler.iceberg.awsS3Bucket |
必須 | 文字列値。 | なし | Icebergウェアハウスを格納するAWS S3バケット名。 |
gg.eventhandler.iceberg.awsAccessKeyId |
必須 | 文字列値。 | なし | 認証用のAWSアクセス・キーID。 |
gg.eventhandler.iceberg.awsSecretKey |
必須 | 文字列値。 | なし | 認証用のAWSシークレット・アクセス・キー。 |
gg.eventhandler.iceberg.awsSessionToken |
オプション | 文字列値。 | なし | 認証用のAWSセッション・トークン。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
AWS S3オブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
9.2.12.2.7.2.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- AWS S3 (
s3a://
スキーム)に書き込むためのHadoop AWS SDK依存性
9.2.12.2.7.2.2 Hadoopカタログのサンプル構成とAWS S3 s3a://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-aws/*:DependencyDownloader/dependencies/iceberg-common/ gg.eventhandler.iceberg.catalogType=hadoop gg.eventhandler.iceberg.fileSystemScheme=s3a:// gg.eventhandler.iceberg.awsS3Region=us-east-2 gg.eventhandler.iceberg.awsS3Bucket=<s3-bucket> gg.eventhandler.iceberg.awsAccessKeyId=<access-key-id> gg.eventhandler.iceberg.awsSecretKey=<secret-key> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.7.3 Iceberg Hadoopカタログの構成とgs://スキーム
Hadoopカタログとgs://
スキームを使用したGCSオブジェクト・ストアの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値。 | hadoop |
hadoop 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値。 | file:// |
GCSオブジェクト・ストレージの場所を示すファイル・システム・スキーム: gs:// 。
|
gg.eventhandler.iceberg.gcpStorageBucket |
必須 | 文字列値。 | なし | Icebergウェアハウスを格納するGoogle Cloud Storageバケット名。 |
gg.eventhandler.iceberg.gcpProjectId |
必須 | 文字列値。 | なし | GCSバケットを格納するGoogle Cloudプロジェクトのproject-idを設定します。 |
gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile |
必須 | 文字列値。 | なし | Googleサービス・アカウント・キー・ファイルへのパスを設定します。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
GCSオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
9.2.12.2.7.3.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- Google Cloud Storage (GCS)に書き込むためのHadoop Google Cloud Storage SDK依存性
9.2.12.2.7.3.2 Hadoopカタログのサンプル構成とGCS gs://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-gcs/*:DependencyDownloader/dependencies/iceberg-common/* gg.eventhandler.iceberg.catalogType=hadoop gg.eventhandler.iceberg.fileSystemScheme=gs:// gg.eventhandler.iceberg.gcpStorageBucket=<gcs-bucket> gg.eventhandler.iceberg.gcpProjectId=<gcp-project-id> gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile=<gcp-service-account-key-file> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.2.7.4 Iceberg Hadoopカタログの構成とabfss://スキーム
Hadoopカタログとabfss://
スキームを使用したAzure Data Lake Storageの構成プロパティを次に示します:
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.iceberg.catalogType |
オプション | 文字列値 | hadoop |
hadoop 。
|
gg.eventhandler.iceberg.fileSystemScheme |
オプション | 文字列値 | file:// |
Azure Data Lake Storageの場所を示すファイル・システム・スキーム: abfss:// 。
|
gg.eventhandler.iceberg.azureAccountName |
必須 | 文字列値 | なし | Icebergウェアハウスのコンテナを含むAzureストレージ・アカウント名。 |
gg.eventhandler.iceberg.azureContainer |
必須 | 文字列値 | なし | Icebergウェアハウスを格納するAzureストレージ・アカウント・コンテナ名。 |
gg.eventhandler.iceberg.azureAccountKey |
必須 | 文字列値。 | なし | Azureストレージ・アカウント・キー。 |
gg.eventhandler.iceberg.azureBlobEndpoint |
オプション | 文字列値。 | \ |
Azure Storageサービス・エンドポイント。 |
gg.eventhandler.iceberg.proxyServer |
オプション | 文字列値。 | なし | Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー。 |
gg.eventhandler.iceberg.proxyPort |
オプション | 文字列値。 | 80 |
Azureオブジェクト・ストレージに接続するためのプロキシ・サーバー・ポート。 |
9.2.12.2.7.4.1 クラスパスと依存性
Javaクラスパス(gg.classpath
)には、次の依存性を含める必要があります:
- Icebergの共通依存性
- Azure Data Lake (ADLS)に書き込むためのHadoop Azure SDK依存性
9.2.12.2.7.4.2 Hadoopカタログのサンプル構成とADLS abfss://スキーム
gg.target=iceberg gg.eventhandler.iceberg.warehouseLocation=/path/to/iceberg/tables gg.classpath=DependencyDownloader/dependencies/iceberg-hadoop-azure/*:DependencyDownloader/dependencies/iceberg-common/* gg.eventhandler.iceberg.catalogType=hadoop gg.eventhandler.iceberg.fileSystemScheme=abfss:// gg.eventhandler.iceberg.azureAccountName=<azure-storage-account-name> gg.eventhandler.iceberg.azureContainer=<azure-storage-container> gg.eventhandler.iceberg.azureAccountKey=<azure-storage-account-key> gg.eventhandler.iceberg.proxyServer=<proxy-server> gg.eventhandler.iceberg.proxyPort=<proxy-port>
9.2.12.3 構成テンプレート
Iceberg構成テンプレートは、/path/to/AdapterExamples/bigdata/iceberg
ディレクトリにあります。
Oracle GoldenGateでは、次のテンプレート・プロパティ・ファイルがパッケージ化されています:
iceberg-glue-s3.properties
iceberg-hadoop-adls.properties
iceberg-hadoop-gcs.properties
iceberg-hadoop-localfile.properties
iceberg-hadoop-s3.properties
iceberg-jdbc-localfile.properties
iceberg-jdbc-s3.properties
iceberg-jdbc-adls.properties
iceberg-jdbc-gcs.properties
iceberg-nessie-adls.properties
iceberg-nessie-gcs.properties
iceberg-nessie-s3.properties
iceberg-nessie-s3a.properties
iceberg-polaris-adls.properties
iceberg-polaris-gcs.properties
iceberg-polaris-s3.properties
iceberg-rest.properties
親トピック: Apache Iceberg
9.2.12.4 制限事項
- Oracle GoldenGateでは、自動表作成時のパーティション列の構成をサポートしていません。
パーティション表が必要な場合は、必要なパーティション列を使用してIceberg表を手動で作成する必要があります。
- レプリケーション・プロセスを開始した後の、表のパーティション化スキーマの変更はサポートされていません。
表のパーティション化スキーマを変更する必要がある場合は、ターゲット・データベースで表を手動で削除して再作成する必要があります。
表内のデータを再ロードする必要があります。
ノート:
このプロセスについては、Oracleサポートにお問い合せください。 - 既存のIcebergターゲット表には、スキーマ内に識別子列(キー列)が必要です。
ターゲット表に識別子列がない場合、Replicatプロセスは異常終了します。
- 次のIcebergデータ型は、キー列(Iceberg識別子フィールド)として使用できません:
- binary
- fixed
- uuid
親トピック: Apache Iceberg
9.2.12.5 初期ロードによるOracle GoldenGateのインスタンス化
インスタンス化の標準ステップの詳細は、https://docs.oracle.com/en/middleware/goldengate/core/21.3/admin/instantiating-oracle-goldengate-initial-load.html#GUID-7D3BD34D-490B-4E76-A48B-63572D93881Aを参照してください
9.2.12.5.1 Iceberg固有のインスタンス化のステップ
- ExtractおよびReplicatの初期ロード・グループを開始します。
- Extractの変更同期グループを開始し、操作を証跡ファイルに書き込みます。
ノート:
Replicatの変更同期グループは、まだ開始しないでください。 - 初期ロードReplicatグループが初期ロード証跡ファイルの適用を完了するまで待機します。
- Extractの変更同期グループを停止します。
- 変更同期Replicatグループを構成します。
- 変更同期Replicatグループにパラメータ
UPDATEINSERTS
を追加します。 - 変更同期Replicatグループを開始します。
- 変更同期Replicatグループが、変更同期Extractグループによって生成されたすべての証跡を処理するまで待機します。
最後の証跡ファイルの最後のレコードの終了オフセットは、変更同期ReplicatグループのJSONチェックポイント・ファイルの
targetCheckpoint
値と一致する必要があります。例:- 最後の証跡ファイルに対して
ls -l
を実行します。-rw-r--r-- 1 username dba 5660 Feb 22 2024 /path/to/trail/tr000000003
- ここでの最後のレコードの終了オフセットは
5660
、証跡順序番号は3
です。 - 変更同期ReplicatグループのJSONチェックポイント・ファイルを開きます
これには、次の属性が必要です:
"targetCheckpoint" : { "trailSequence" : 3, "trailOffset" : 5660 }
このtargetCheckpoint
は、最後のレコードの終了オフセットと一致する必要があります。
- 最後の証跡ファイルに対して
- 変更同期Replicatグループを停止し、パラメータ
UPDATEINSERTS
を削除します。 - これで、初期ロードが完了しました。変更同期ExtractグループおよびReplicatグループを開始します。
9.2.12.6 トラブルシューティングと診断
- Oracle GoldenGate Replicatでは、バージョン2仕様に従ってIcebergデータ型をサポートしています。
- Iceberg識別子(キー)フィールドは、nullにできません。したがって、キー列の値がnullの場合、Replicatプロセスは異常終了します。
ADD/ALTER/DROP
列などの表に対するスキーマ変更は、Replicatプロセスの実行中はサポートされません。レプリケーション・プロセスを停止し、スキーマ変更を適用してレプリケーション・プロセスを再開するステップがあります。
ノート:
このプロセスについては、Oracleサポートにお問い合せください。ターゲット表にマップされていない列がある場合、Replicatプロセスは異常終了します。
- 次のメッセージによるReplicatの異常終了:
ICEBERGEH-00060 Operation record at position '00000000030000003318' for the table 'hadoop.oggdb1.types_tab' has missing column values in an UPDATE. Replicat will ABEND. To override this behavior set 'gg.eventhandler.iceberg.abendOnMissingColumns=false'and restart the Replicat process. Setting this property to false will instruct Replicat to lookup missing columns from the target table and therefore may impact performance.
デフォルトでは、Iceberg Replicatプロセスでは、UPDATE操作で列値が欠落していない証跡ファイルを想定しています。Replicatは、プロパティgg.eventhandler.iceberg.abendOnMissingColumns=false
を設定することで、UPDATE操作で列値が欠落している圧縮証跡ファイルを処理するように構成できます。 - 次のメッセージによるReplicatの異常終了:
ICEBERGEH-00057 Detected changes in the partition columns for the table 'hadoop.oggdb1.types_tab'. Partition columns in the previous run: '<column list>', partition columns in this run: '<column list>'. GoldenGate does not support changing partition columns. Alter the table manually to match the partition columns in the previous run and restart the replicat process.
Iceberg Replicatプロセスでは、パーティション列の変更をサポートしていません。 - 次のメッセージによるReplicatの異常終了:
ICEBERGEH-00067 Invalid state. The column '<column_name>' in the target table '<table_name>' is not mapped. The following are the mapped columns: '<column list>'. Iceberg Replicat requires all the columns in the target table to be mapped. Please map the column ''<unmapped column>' and restart the Replicat process.
Iceberg Replicatプロセスでは、ターゲット表のすべての列をマップする必要があります。 - 次のメッセージによるReplicatの異常終了:
ICEBERGEH-00068 Key column '<column name>' in the table '<table name>' is of type float or double. Iceberg does not support float or double type as identifier (key) fields. Initiating Replicat process shutdown. Please modify the table schema to exclude double/float types as key columns and restart the Replicat process.
現在のIceberg仕様(バージョン2)に従って、列の型double
およびfloat
は識別子(キー)列として使用できません。 - 次のメッセージによるReplicatの異常終了:
ICEBERGEH-00070 Table '<table_name>' contains a key column '<column_name>' of '<binary/fixed/uuid>' type that is not supported by GoldenGate. The following column types are not supported as key: 'binary, fixed, uuid'. To proceed, either use a supported Iceberg key column type by altering the 'KEYCOLS' clause in the Replicat 'MAP' statement as per the following example: 'MAP <sourceSchema>.<sourceTable>, TARGET <targetSchema>.<targetTable>, KEYCOLS("key1", "key2");' or alter the Iceberg target tables's identifier fields to exclude the key column types that are not supported by GoldenGate. You can use the following Iceberg SQL statement to alter the table schema: 'ALTER TABLE prod.db.sample SET IDENTIFIER FIELDS key1, key2'.
Icebergの型binary
、fixed
およびuuid
は、識別子(キー)列として使用できません。 - 次のメッセージによるReplicatの異常終了:
ICEBERGEH-00071=Table '<table_name>' does not define an Iceberg identifier column. Identifier columns are used as key columns by GoldenGate. Initiating Replicat process shutdown. Please alter the Iceberg target tables's schema to add identifier columns. You can use the following Iceberg SQL statement to alter the table schema: 'ALTER TABLE prod.db.sample SET IDENTIFIER FIELDS key1, key2'.
Icebergターゲット表には、スキーマ内に識別子列(キー列)が必要です。 - Replicatハンドラのログ・ファイルの例外:
com.google.cloud.storage.StorageException: 401 Unauthorized
org.apache.iceberg.exceptions.RuntimeIOException: Failed to get file system for path
org.apache.iceberg.exceptions.RuntimeIOException: Failed to create file
org.apache.iceberg.exceptions.ForbiddenException: Forbidden
これらは、オブジェクト・ストレージ認証プロパティの構成が正しくないことが原因で発生する一般的な例外です。
次のプロパティが設定されていることを確認してください:
gg.eventhandler.iceberg.fileSystemScheme
、gg.eventhandler.iceberg.proxyServer
、gg.eventhandler.iceberg.proxyPort
gg.eventhandler.iceberg.awsAccessKeyId
、gg.eventhandler.iceberg.awsSecretKey
、gg.eventhandler.iceberg.awsS3Region
gg.eventhandler.iceberg.azureAccountKey
gg.eventhandler.iceberg.gcpProjectId
、gg.eventhandler.iceberg.gcpServiceAccountJsonKeyFile
。
親トピック: Apache Iceberg