Spark を使用した Apache Iceberg のiDrive®e2 との統合

    Apache Icebergは、データレイクで大規模分析データセットを管理するためのオープンソースのテーブルフォーマットです。Apache Sparkを使用してApache IcebergをIDrive® e2と統合すると、スケーラブルで安全なクラウドオブジェクトストレージとしてIDrive®e2を利用しながら、強力なテーブルフォーマット機能で大規模な分析データセットを管理することができます。この統合により、データレイクにおけるコスト効率の高いストレージと高性能な分析が容易になります。

    前提条件

    作業を始める前に、以下のことを確認してください:

    1. 有効なIDrive®e2アカウント。お持ちでない場合は、こちらからご登録ください。
    2. IDrive®e2のバケット。バケツの作成方法を参照してください。
    3. 有効なアクセスキーIDとシークレットアクセスキー。アクセスキーの作成方法をご覧ください。
    4. テストでは、Ubuntu 24.04の以下のパッケージを使用した。
      1. スパーク・バージョン3.5.6
      2. iceberg-spark-runtime-3.5_2.12-1.9.2.jar
      3. hadoop-aws-3.3.4.jar
      4. aws-java-sdk-bundle-1.11.1026.jar

    IDrive®e2 で Apache Iceberg を設定する手順

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

    2. 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.jar

      curl -O
      https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.11.1026/aws-java-sdk-bundle-1.11.1026.jar

    3. 以下のコードを実行して、バケットを作成し(存在しない場合)、デスティネーションのテーブル(バケット)にデータを挿入します。

      #!/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

    注:アクセスキー、エンドポイント、ディレクトリ名は、設定に応じて変更してください。

    注:データの復元は、特定のバックアップソリューションプロバイダーによって処理され、お客様の環境に固有の複数の変数の影響を受けます。アプリケーション関連のお問い合わせ/サポートについては、バックアップ・ソリューション・プロバイダのテクニカル・チームに問い合わせることを強くお勧めします。