Un volume externe est un système de fichiers distribué et une solution de stockage de données non structurées fourni par MaxCompute. Il associe un répertoire OSS à un projet MaxCompute, ce qui permet d'interroger et de traiter directement les fichiers stockés dans Object Storage Service (OSS), sans importer les données dans des tables MaxCompute. Cette approche réduit la redondance des données et les frais de transmission.
Opérations courantes
| Opération | Description | Utilisateurs autorisés |
|---|---|---|
| Créer un volume externe | Crée un volume externe dans un projet | Propriétaire du volume externe ; propriétaire du projet ; utilisateurs disposant du rôle Super_Administrator ou Admin |
| Lister les volumes externes et afficher la structure des répertoires | Répertorie tous les volumes externes ou affiche la structure des répertoires d'un volume spécifique | — |
| Supprimer un volume externe | Supprime un volume externe | — |
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
-
Le client MaxCompute (odpscmd) version 0.43.0 ou ultérieure. Pour les instructions d'installation, consultez la rubrique Client MaxCompute (odpscmd).
Pour exécuter des commandes sur la page DataStudio ou la page SQL Query de la console DataWorks, le client MaxCompute intégré doit être en version 0.43.2 ou ultérieure. Exécutez la commande
Show version;pour vérifier la version. Pour plus d'informations, reportez-vous à la documentation Use MaxCompute in DataWorks . Le SDK for Java en version 0.43.0 ou ultérieure, si vous utilisez le SDK Java.
Un compte Alibaba Cloud ou un utilisateur RAM disposant des autorisations d'accès à OSS. Pour les étapes d'autorisation, consultez la rubrique Autorisation STS pour OSS.
Créer un volume externe
Syntaxe
vfs -create <volume_name>
-storage_provider oss
-url <oss://oss_endpoint/bucket_name/directory_name>
[-acd <true|false>]
-role_arn <arn:aliyun:xxx/aliyunodpsdefaultrole>
Les paramètres entre crochets [ ] sont facultatifs.
| Paramètre | Obligatoire | Description |
|---|---|---|
volume_name |
Oui | Nom du volume externe à créer. |
storage_provider |
Oui | Fournisseur de stockage. Définissez la valeur sur oss. OSS est le seul fournisseur pris en charge. |
url |
Oui | Répertoire OSS où sont stockés les fichiers de données. Format : oss://<oss_endpoint>/<bucket_name>/<directory_name>. Le nom du bucket et le nom du répertoire de second niveau sont obligatoires. Consultez les notes ci-dessous pour connaître les exigences relatives au endpoint. |
acd |
Non | Indique s'il faut créer automatiquement le répertoire OSS s'il n'existe pas. Valeur par défaut : false. Consultez les notes ci-dessous pour plus de détails sur le comportement. |
role_arn |
Oui | Nom de ressource Alibaba Cloud (ARN) du rôle RAM disposant des autorisations d'accès à OSS. Pour obtenir l'ARN, consultez la rubrique Utiliser les informations d'identification temporaires fournies par STS pour accéder à OSS. |
Remarques concernant le paramètre url :
Utilisez un endpoint interne OSS pour éviter des frais supplémentaires liés au trafic Internet, par exemple :
oss://oss-cn-beijing-internal.aliyuncs.com/my-bucket/my-dir. Pour obtenir la liste complète des endpoints internes, consultez la rubrique Régions et endpoints.Déployez le bucket OSS dans la même région que votre projet MaxCompute afin d'éviter les problèmes de connectivité interrégionale.
Remarques concernant le paramètre acd :
false(valeur par défaut) : si le répertoire spécifié n'existe pas, la commande échoue et renvoie une erreur.true: si le répertoire n'existe pas, MaxCompute le crée automatiquement en utilisant les autorisations accordées viarole_arn. Si le répertoire existe déjà, MaxCompute l'utilise directement.
Lorsque acd est défini sur true et que le répertoire est créé automatiquement, MaxCompute ne supprime pas le répertoire si la création du volume externe échoue ensuite.
Une fois le volume externe créé, son chemin suit le format odps://<project_name>/<volume_name>. Ce chemin peut être utilisé par le moteur Spark et les tâches MapReduce.
Exemple
Créez un volume externe nommé test_ext_l :
vfs -create test_ext_l -storage_provider oss -url oss://oss-cn-hangzhou-internal.aliyuncs.com/test/ex_volume/ -role_arn acs:ram::xxxxxxx:role/aliyunodpsdefaultrole;
Lister les volumes externes et afficher la structure des répertoires
Syntaxe
-- List all external volumes in the project
vfs -ls /;
-- View the directory structure of a specific external volume
vfs -ls [-R] /<volume_name>;
| Paramètre | Obligatoire | Description |
|---|---|---|
volume_name |
Oui | Nom du volume externe. |
-R |
Non | Liste récursivement les sous-répertoires. |
Exemples
Lister tous les volumes externes :
vfs -ls /;
Résultat attendu :
Found 2 items
drwxrwxrwx - 0 2023-03-11 12:06 /test_ext_l -> oss://oss-cn-shanghai-internal.aliyuncs.com/test/ex_volume
drwxrwxrwx - 0 2023-03-21 07:33 /myfirst_volume4 -> oss://oss-cn-shanghai-internal.aliyuncs.com/paristech/data
Les volumes externes auxquels vous n'avez pas accès ne s'affichent pas dans le résultat. Pour accorder l'accès à un utilisateur, exécutez la commande suivante. Les autorisations disponibles sont Read, Write et CreateVolume.
grant Read on volume myfirst_volume4 to RAM$xxxxxx:dev01;
Afficher la structure des répertoires de test_ext_l :
vfs -ls -R /test_ext_l;
Résultat attendu :
drwxrwxrwx - 0 2023-03-27 07:31 /test_ext_l/test -> oss://oss-cn-hangzhou-internal.aliyuncs.com/test/ex_volume/test
Supprimer un volume externe
Syntaxe
-- Syntax 1
vfs -rm -r /<volume_name>;
-- Syntax 2
vfs -rmv /<volume_name>;
| Paramètre | Obligatoire | Description |
|---|---|---|
volume_name |
Oui | Nom du volume externe à supprimer. |
Exemple
Supprimez le volume externe nommé test_ext_l :
vfs -rm -r /test_ext_l;
Étapes suivantes
Pour gérer les volumes externes à l'aide du SDK, consultez la rubrique Gérer les volumes externes à l'aide des SDK.
Pour des exemples complets d'interrogation et de traitement de données non structurées avec des volumes externes, consultez la rubrique Utiliser les volumes externes MaxCompute pour traiter des données non structurées.