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

MaxCompute:MaxComputeのSparkからOSSにアクセスする

最終更新日:Jul 10, 2025

このトピックでは、MaxComputeのSparkからObject Storage Service (OSS) にアクセスする方法について説明します。

OSSエンドポイントの設定

機能をデバッグするときは、OSSが存在するリージョンのパブリックエンドポイントを使用します。 本番環境でジョブを送信するときに、OSSが存在するリージョンの内部エンドポイントを使用します。 詳細については、「リージョン、エンドポイント、オープンポート」をご参照ください。

OSSアクセス方法の設定

  • アカウントのAccessKey IDとAccessKey secretを使用してOSSにアクセスします。

    spark.hadoop.fs.oss.accessKeyId = xxxxxx
    spark.hadoop.fs.oss.accessKeySecret = xxxxxx
    spark.hadoop.fs.oss.endpoint = oss-xxxxxx-internal.aliyuncs.com
  • Security Token Service (STS) トークンを使用してOSSにアクセスします。

    アカウントのAccessKey IDとAccessKey secretを使用してOSSにアクセスする場合は、プレーンテキストのAccessKey IDとAccessKey secretを設定する必要があります。 これはセキュリティ上のリスクを招く。 STSトークンを使用してOSSにアクセスすることを推奨します。

    1. [クラウドリソースアクセス権限付与] ページに移動し、[詳細を表示] をクリックします。 その後、MaxComputeプロジェクトは、STSトークンを使用して、現在のAlibaba CloudアカウントのOSSリソースにアクセスできます。

      説明

      MaxComputeプロジェクトの所有者が、アクセスするOSSリソースを所有するAlibaba Cloudアカウントである場合にのみ、この方法を使用してMaxComputeプロジェクトにOSSリソースへのアクセスを許可できます。

    2. MaxComputeのSparkが担当するロールのAlibaba Cloudリソース名 (ARN) を取得します。

      1. Resource Access Management (RAM) コンソールにログインします。

      2. 左側のナビゲーションウィンドウで、[アイデンティティ]> [ロール] を選択します。

      3. [ロール] ページで、AliyunODPSDefaultRoleを検索します。

      4. 検索結果で、[ロール名] 列の [AliyunODPSDefaultRole] をクリックします。 表示されるページで、[基本情報] セクションの [ARN] の値を取得します。 値はacs:ram:: xxxxxxxxxxxxxxxxx: role/aliyunodpsdefaultrole形式です。

    3. MaxComputeのSparkの設定に次の内容を追加します。

      # Configure Spark on MaxCompute to access OSS resources by using an STS token. 
      spark.hadoop.fs.oss.credentials.provider=org.apache.hadoop.fs.aliyun.oss.AliyunStsTokenCredentialsProvider
      
      # Configure the ARN of the role that Spark on MaxCompute assumes. 
      spark.hadoop.fs.oss.ststoken.roleArn=acs:ram::xxxxxxxxxxxxxxx:role/aliyunodpsdefaultrole
      
      # Configure the internal endpoint that is used to access OSS resources over a VPC. 
      spark.hadoop.fs.oss.endpoint=oss-cn-hangzhou-internal.aliyuncs.com

ホワイトリストの構成

ほとんどの場合、MaxComputeのSparkは、ホワイトリストを設定する必要なしにOSSリソースにアクセスできます。

特殊な場合 (たとえば、大量のデータがOSSバケットから読み取られたり、OSSバケットに書き込まれたりする場合) 、MaxComputeのSparkはOSSリソースへのアクセスに失敗する可能性があります。 この場合は、次の設定を追加します。

spark.hadoop.odps.cupid.trusted.services.access.list=[your_bucket_name].oss-xxxxxx-internal.aliyuncs.com
説明

この設定は、yarn-clusterモードでジョブを送信する場合にのみ使用できます。 設定ファイルまたはCLIツールのコマンドに設定を追加する必要があります。

JindoSDKを使用したOSSへのアクセス

spark.hadoop.fs.AbstractFileSystem.oss.implおよびspark.hadoop.fs.oss.implパラメーターをSparkConfオブジェクトに追加します。 サンプルコード:

val conf = new SparkConf()
  .setAppName("jindo-sdk-demo")
  .set("spark.hadoop.fs.AbstractFileSystem.oss.impl", "com.aliyun.emr.fs.oss.OSS")
  .set("spark.hadoop.fs.oss.impl", "com.aliyun.emr.fs.oss.JindoOssFileSystem")
説明

spark.hadoop.fs.oss.implパラメーターを設定する必要があります。 それ以外の場合、「No FileSystem for scheme: oss」というエラーメッセージが返されます。