Tous les produits
Search
Centre de documentation

:Accéder à OSS depuis Spark sur MaxCompute

Dernière mise à jour :Aug 10, 2026

Cette rubrique explique comment accéder à Object Storage Service (OSS) depuis Spark sur MaxCompute.

Configurer un endpoint OSS

Pour le débogage, utilisez l'endpoint public de la région où se trouve OSS. Pour la soumission de tâches en production, utilisez l'endpoint interne de cette même région. Pour plus d'informations, consultez la section Régions et endpoints.

Configurer une méthode d'accès à OSS

  • Accédez à OSS à l'aide de l'AccessKey ID et de l'AccessKey Secret d'un compte.

    spark.hadoop.fs.oss.accessKeyId = xxxxxx
    spark.hadoop.fs.oss.accessKeySecret = xxxxxx
    spark.hadoop.fs.oss.endpoint = oss-xxxxxx-internal.aliyuncs.com
  • Accédez à OSS à l'aide d'un jeton Security Token Service (STS).

    L'utilisation de l'AccessKey ID et de l'AccessKey Secret d'un compte impose de configurer ces identifiants en clair, ce qui présente des risques de sécurité. Nous vous recommandons d'utiliser un jeton STS pour accéder à OSS.

    1. Accédez à la page RAM Quick Authorization et cliquez sur Authorize. Le projet MaxCompute peut alors accéder aux ressources OSS du compte Alibaba Cloud actuel via un jeton STS.

      Remarque

      Cette méthode d'autorisation n'est possible que si le propriétaire du projet MaxCompute est le compte Alibaba Cloud détenteur des ressources OSS cibles.

    2. Récupérez l'Alibaba Cloud Resource Name (ARN) du rôle assumé par Spark sur MaxCompute.

      1. Connectez-vous à la console Resource Access Management (RAM).

      2. Dans le volet de navigation de gauche, choisissez Identities > Roles.

      3. Sur la page Roles, recherchez AliyunODPSDefaultRole.

      4. Dans les résultats, cliquez sur AliyunODPSDefaultRole dans la colonne Role Name. Sur la page affichée, récupérez la valeur du champ ARN dans la section Basic Information. La valeur suit le format acs:ram::xxxxxxxxxxxxxxx:role/aliyunodpsdefaultrole.

    3. Ajoutez le contenu suivant à la configuration de Spark sur MaxCompute :

      # 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

Configurer une liste d'autorisation

Dans la plupart des cas, Spark sur MaxCompute accède aux ressources OSS sans nécessiter de configuration de liste d'autorisation.

Dans certains cas particuliers (par exemple, lors de lectures ou d'écritures massives dans des buckets OSS), l'accès aux ressources OSS par Spark sur MaxCompute peut échouer. Ajoutez alors la configuration suivante :

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

Cette configuration s'applique uniquement aux tâches soumises en mode yarn-cluster. Vous devez l'ajouter au fichier de configuration ou via une commande de l'outil CLI.

Utiliser JindoSDK pour accéder à OSS

Ajoutez les paramètres spark.hadoop.fs.AbstractFileSystem.oss.impl et spark.hadoop.fs.oss.impl à l'objet SparkConf. Exemple de code :

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")
Remarque

La configuration du paramètre spark.hadoop.fs.oss.impl est obligatoire. À défaut, le message d'erreur "No FileSystem for scheme: oss" s'affiche.