Spark を使用した Apache Iceberg のiDrive®e2 との統合
Apache Icebergは、データレイクで大規模分析データセットを管理するためのオープンソースのテーブルフォーマットです。Apache Sparkを使用してApache IcebergをIDrive® e2と統合すると、スケーラブルで安全なクラウドオブジェクトストレージとしてIDrive®e2を利用しながら、強力なテーブルフォーマット機能で大規模な分析データセットを管理することができます。この統合により、データレイクにおけるコスト効率の高いストレージと高性能な分析が容易になります。
前提条件
作業を始める前に、以下のことを確認してください:
IDrive®e2 で Apache Iceberg を設定する手順
- Icebergライブラリ(Spark)のインストール時に、以下のディレクトリを更新します。 SPARK_HOME/conf/spark-defaults.conf。 以下の構成で:
spark.driver.extraClassPath=/home/vishal/spark-extra-jars/hadoop-aws-3.3.4.jar:/home/vishal/spark-extra-jars/aws-java-sdk-bundle-1.11.1026.jar
spark.executor.extraClassPath=/home/vishal/spark-extra-jars/hadoop-aws-3.3.4.jar:/home/vishal/spark-extra-jars/aws-java-sdk-bundle-1.11.1026.jar
#Icerbergのエクステンションとカタログのセットアップ:
spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions。
spark.sql.catalog.s3cat=org.apache.iceberg.spark.SparkCatalog
spark.sql.catalog.s3cat.type=hadoop
spark.sql.catalog.s3cat.warehouse=s3a://warehouse09876
(注: これはバケット名です)Idrive®e2用の#S3Aファイルシステム設定:
spark.hadoop.fs.s3a.endpoint=<Idrivee2-endpoint>
(Ex: v1e8.da.idrivee2-17.com)spark.hadoop.fs.s3a.path.style.access=true
spark.hadoop.fs.s3a.connection.ssl.enabled=true
spark.hadoop.fs.s3a.signing-region=us-east-1
spark.hadoop.fs.s3a.access.key=<Access Key>
spark.hadoop.fs.s3a.secret.key=<Secret Key>
#パフォーマンスチューニングのためのオプションステップ:
spark.hadoop.fs.s3a.fast.upload=true
spark.hadoop.fs.s3a.connection.maximum=100
spark.hadoop.fs.s3a.threads.max=20
Spark 3.5.6に必要なHadoop AWSおよびAWS SDKをダウンロードする。
mkdir -p ~/spark-extra-jars
cd ~/spark-extra-jars
# Hadoop AWS + AWS SDK for Spark 3.5.6 (Hadoop 3.3.4)をダウンロードする。
curl -O
https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.3.4/hadoop-aws-3.3.4.jarcurl -O
https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.11.1026/aws-java-sdk-bundle-1.11.1026.jar以下のコードを実行して、バケットを作成し(存在しない場合)、デスティネーションのテーブル(バケット)にデータを挿入します。
#!/bin/bash
spark-sql --jars
SPARK_HOME/jars/iceberg-spark-runtime-3.5_2.12-1.9.2.jar、
SPARK_HOME/jars/hadoop-aws-3.3.4.jar、
SPARK_HOME/jars/aws-java-sdk-bundle-1.11.1026.jar -e "CREATE NAMESPACE IF NOT EXISTS s3cat.db;
CREATE TABLE IF NOT EXISTS s3cat.db.events (
id BIGINT、
ts TIMESTAMP、
データ STRING
)USING iceberg;INSERT INTO s3cat.db.events VALUES (1, current_timestamp(), 'hello'), (2, current_timestamp(), 'world');
SELECT * FROM s3cat.db.events;
" --verbose
注:アクセスキー、エンドポイント、ディレクトリ名は、設定に応じて変更してください。
注:データの復元は、特定のバックアップソリューションプロバイダーによって処理され、お客様の環境に固有の複数の変数の影響を受けます。アプリケーション関連のお問い合わせ/サポートについては、バックアップ・ソリューション・プロバイダのテクニカル・チームに問い合わせることを強くお勧めします。