すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:OSSへのアクセス

最終更新日:Jul 09, 2024

AnalyticDB for MySQL Sparkを使用すると、Alibaba Cloudアカウント内またはAlibaba Cloudアカウント間でObject Storage Service (OSS) データにアクセスできます。 このトピックでは、Alibaba Cloudアカウント内またはAlibaba Cloudアカウント間でOSSデータにアクセスする方法について説明します。

前提条件

  • AnalyticDB for MySQL Data Lakehouse Editionクラスターが作成されます。

  • AnalyticDB for MySQLクラスターは、Object Storage Service (OSS) バケットと同じリージョンに作成されます。

  • AnalyticDB for MySQLクラスターのジョブリソースグループが作成されます。 詳細については、「リソースグループの作成」をご参照ください。

  • AnalyticDB for MySQLクラスター用のデータベースアカウントが作成されます。

  • 承認は完了です。 詳細については、「権限付与の実行」をご参照ください。

    重要

    Alibaba Cloudアカウント内のOSSデータにアクセスするには、AliyunADBSparkProcessingDataRole権限が必要です。 Alibaba Cloudアカウント間でOSSデータにアクセスするには、他のAlibaba Cloudアカウントの認証を実行する必要があります。

ステップ1: データの準備

  1. アクセス用のテキストファイルを準備し、ファイルをOSSバケットにアップロードします。 この例では、readme.txtという名前のファイルが使用されます。 詳細については、「オブジェクトのアップロード」をご参照ください。

    AnalyticDB for MySQL
    Database service
  2. Pythonコードをコンパイルし、OSSバケットにアップロードします。 この例では、example.pyという名前のPythonコードファイルが使用されています。 Pythonコードファイルは、readme.txtファイルの最初の行を読み取るために使用されます。

    import sys
    
    from pyspark.sql import SparkSession
    
    # Initialize a Spark application.
    spark = SparkSession.builder.appName('OSS Example').getOrCreate()
    # Read the specified text file. The file path is specified by the args parameter.
    textFile = spark.sparkContext.textFile(sys.argv[1])
    # Count and display the number of lines in the text file.
    print("File total lines: " + str(textFile.count()))
    # Display the first line of the text file.
    print("First line is: " + textFile.first())
    

手順2: OSSデータへのアクセス

  1. AnalyticDB for MySQL コンソールにログインします。 ホームページの左上でリージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。   [Data Lakehouse Edition] タブで、管理するクラスターを見つけ、クラスターIDをクリックします。

  2. 左側のナビゲーションウィンドウで、[ジョブの開発] > Spark Jar 開発 を選択します。

  3. エディターの上部で、ジョブリソースグループとSparkアプリケーションタイプを選択します。 この例では、バッチタイプが選択されています。

  4. エディタで次のSparkコードを実行します。 テキストファイルの行の総数と最初の行の内容を表示します。

    Alibaba Cloudアカウント内のOSSデータへのアクセス

    {
      "args": ["oss://testBucketName/data/readme.txt"],
      "name": "spark-oss-test",
      "file": "oss://testBucketName/data/example.py",
      "conf": {
        "spark.driver.resourceSpec": "small",
        "spark.executor.resourceSpec": "small",
        "spark.executor.instances": 1
      }
    }

    下表に、各パラメーターを説明します。

    パラメーター

    説明

    args

    Sparkアプリケーションに渡される引数。 複数の引数はコンマ (,) で区切ります。

    この例では、テキストファイルのOSSパスがtextFileに割り当てられています。

    name

    Sparkアプリケーションの名前。

    file

    Sparkアプリケーションのメインファイルのパス。 メインファイルは、エントリクラスを含むJARパッケージ、またはPythonプログラムのエントリポイントとして機能する実行可能ファイルです。

    重要

    SparkアプリケーションのメインファイルをOSSに保存する必要があります。

    spark.adb.roleArn

    Alibaba Cloudアカウント間で外部データソースにアクセスするために使用されるResource Access Management (RAM) ロール。 複数のロールはコンマ (,) で区切ります。 パラメーターをacs:ram ::< testAccountID>:role/<testUserName> 形式で指定します。

    • <testAccountID>: 外部データソースを所有するAlibaba CloudアカウントのID。

    • <testUserName>: Alibaba Cloudアカウント間で認証を実行するときに作成されるRAMロールの名前。 詳細については、「権限付与の実行」をご参照ください。

    説明

    Alibaba Cloudアカウント内のOSSアクセスにこのパラメーターを指定する必要はありません。

    conf

    Sparkアプリケーションに必要な設定パラメーター。Apache Sparkのものと同様です。 パラメーターはkey:value形式である必要があります。 複数のパラメーターはコンマ (,) で区切ります。 Apache Sparkの設定パラメーターとは異なる設定パラメーター、またはAnalyticDB For MySQLに固有の設定パラメーターについては、「Sparkアプリケーション設定パラメーター」をご参照ください。

    Alibaba Cloudアカウント間のOSSデータへのアクセス

    {
      "args": ["oss:// testBucketName/data/readme.txt"] 、
      "name": "CrossAccount" 、
      "file": "oss:// testBucketName/data/example.py" 、
      "conf": {
        "spark.adb.roleArn": "acs:ram::testAccountID:role/<testUserName>" 、
        "spark.driver.resourceSpec": "small" 、
        "spark.exe cutor.resourceSpec": "small" 、
        "spark.exe cutor.instances": 1  
      }
    }

    下表に、各パラメーターを説明します。

    パラメーター

    説明

    args

    Sparkアプリケーションに渡される引数。 複数の引数はコンマ (,) で区切ります。

    この例では、テキストファイルのOSSパスがtextFileに割り当てられています。

    name

    Sparkアプリケーションの名前。

    file

    Sparkアプリケーションのメインファイルのパス。 メインファイルは、エントリクラスを含むJARパッケージ、またはPythonプログラムのエントリポイントとして機能する実行可能ファイルです。

    重要

    SparkアプリケーションのメインファイルをOSSに保存する必要があります。

    spark.adb.roleArn

    Alibaba Cloudアカウント間で外部データソースにアクセスするために使用されるResource Access Management (RAM) ロール。 複数のロールはコンマ (,) で区切ります。 パラメーターをacs:ram ::< testAccountID>:role/<testUserName> 形式で指定します。

    • <testAccountID>: 外部データソースを所有するAlibaba CloudアカウントのID。

    • <testUserName>: Alibaba Cloudアカウント間で認証を実行するときに作成されるRAMロールの名前。 詳細については、「権限付与の実行」をご参照ください。

    説明

    Alibaba Cloudアカウント内のOSSアクセスにこのパラメーターを指定する必要はありません。

    conf

    Sparkアプリケーションに必要な設定パラメーター。Apache Sparkのものと同様です。 パラメーターはkey:value形式である必要があります。 複数のパラメーターはコンマ (,) で区切ります。 Apache Sparkの設定パラメーターとは異なる設定パラメーター、またはAnalyticDB For MySQLに固有の設定パラメーターについては、「Sparkアプリケーション設定パラメーター」をご参照ください。

  5. 実行 をクリックします。

    Sparkコードを実行した後、Spark JAR開発ページの [アプリケーション] タブの [操作] 列で [ログ] をクリックしてログ情報を表示できます。 詳細については、「Sparkエディター」をご参照ください。

関連ドキュメント