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アカウントを使用する場合は、特権アカウントを作成する必要があります。 詳細については、「データベースアカウントの作成」トピックの「特権アカウントの作成」セクションをご参照ください。
RAM (Resource Access Management) ユーザーを使用する場合は、特権アカウントと標準アカウントの両方を作成し、標準アカウントをRAMユーザーに関連付ける必要があります。 詳細については、「データベースアカウントの作成」および「データベースアカウントの関連付けまたは関連付けの解除」をご参照ください。
承認は完了です。 詳細については、「権限付与の実行」をご参照ください。
重要Alibaba Cloudアカウント内のOSSデータにアクセスするには、AliyunADBSparkProcessingDataRole権限が必要です。 Alibaba Cloudアカウント間でOSSデータにアクセスするには、他のAlibaba Cloudアカウントの認証を実行する必要があります。
ステップ1: データの準備
アクセス用のテキストファイルを準備し、ファイルをOSSバケットにアップロードします。 この例では、
readme.txt
という名前のファイルが使用されます。 詳細については、「オブジェクトのアップロード」をご参照ください。AnalyticDB for MySQL Database service
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データへのアクセス
AnalyticDB for MySQL コンソールにログインします。 ホームページの左上でリージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。 [Data Lakehouse Edition] タブで、管理するクラスターを見つけ、クラスターIDをクリックします。
左側のナビゲーションウィンドウで、
を選択します。エディターの上部で、ジョブリソースグループとSparkアプリケーションタイプを選択します。 この例では、バッチタイプが選択されています。
エディタで次の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アプリケーション設定パラメーター」をご参照ください。実行 をクリックします。
Sparkコードを実行した後、Spark JAR開発ページの [アプリケーション] タブの [操作] 列で [ログ] をクリックしてログ情報を表示できます。 詳細については、「Sparkエディター」をご参照ください。
関連ドキュメント
Sparkアプリケーション開発の詳細については、「Sparkアプリケーション開発の概要」をご参照ください。
Sparkアプリケーションの設定パラメーターについては、「Sparkアプリケーションの設定パラメーター」をご参照ください。