Tous les produits
Search
Centre de documentation

MaxCompute:External Volume SDK说明

Dernière mise à jour :Aug 10, 2026

Cette rubrique explique comment utiliser le SDK Java pour gérer les External Volumes.

Dépendances du projet

Ajoutez la dépendance suivante avant d'utiliser le SDK pour manipuler un External Volume.

<dependency>
  <groupId>com.aliyun.odps</groupId>
  <artifactId>odps-sdk-core</artifactId>
  <version>${Latest Version}</version>
</dependency>
Important

Dans l'extrait de code ci-dessus, Latest Version est un espace réservé. Remplacez-le par une version spécifique du SDK pour compiler correctement votre projet. Consultez le Maven Central Repository pour voir les versions publiées de odps-sdk-core. Nous vous recommandons d'utiliser la dernière version, dont le format est X.X.X-public.

Créer un External Volume

  • Create

    /**
    * 创建 External Volume
    * @param builder volume 的参数配置
    * @throws OdpsException
    */
    public void create(VolumeBuilder builder) throws OdpsException
    
        /**
    * 创建External Volume
    *
    * @param volumeName volume名称
    * @param comment
    * @param type 创建原有Volume传入 {@link Volume}.Type.Old,创建新VolumeFS功能的volume传入{@link Volume}
    *        .Type.New。VolumeFS特性需要Project开启该功能才可使用
    * @throws OdpsException
    */
    public void create(String volumeName, String comment, Volume.Type type)
    
        /**
    * 创建External Volume
    *
    * @param projectName 目标External Volume所在Project名称
    * @param volumeName 所要创建的volume名
    * @param comment
    * @param type 创建原有Volume传入 {@link Volume}.Type.Old,创建新VolumeFS功能的volume传入{@link Volume}
    *        .Type.New。VolumeFS特性需要Project开启该功能才可使用
    * @throws OdpsException
    */
    public void create(String projectName, String volumeName, String comment, Volume.Type type)
    
        /**
    * 创建Volume
    *
    * @param projectName 目标External Volume所在Project名称
    * @param volumeName 所要创建的volume名
    * @param comment
    * @param type 创建原有Volume传入 {@link Volume}.Type.Old,创建新VolumeFS功能的volume传入{@link Volume}
    *        .Type.New。VolumeFS特性需要Project开启该功能才可使用
    * @param lifecycle 生命周期
    * @throws OdpsException
    */
    public void create(String projectName, String volumeName, String comment, Volume.Type type, Long lifecycle) throws OdpsException
    
  • Exemple Create

    /*
     创建External Volume
    */
    
    public void createExternalVolume() throws Exception {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
        String externalLocation = "oss://...";
        
        Long lifecycle;
        String comment;
        String roleArn;
        
        Volumes.VolumeBuilder builder = new Volumes.VolumeBuilder();
            
        builder.project(projectName).volumeName(extVolumeName).type(Volume.Type.EXTERNAL).extLocation(externalLocation);
            
        if (lifecycle != null) {
            builder.lifecycle(lifecycle);
        }
            
        if (comment != null) {
            builder.comment(comment);
        }
            
        if (roleArn != null) {
            builder.addProperty(Volumes.EXTERNAL_VOLUME_ROLEARN_KEY, roleArn);
        }
            
        getCurrentOdps().volumes().create(builder);  
    }

Obtenir les informations d'un External Volume spécifique

  • Get

    /**
    * 获取指定External Volume信息
    *
    * @param volumeName Volume名
    * @return
    */
    public Volume get(String volumeName)
    
    /**
    * 获取指定External Volume信息
    *
    * @param projectName 所在Project名称
    * @param volumeName  External Volume名
    * @return
    */
    public Volume get(String projectName, String volumeName)
    
  • Exemple Get

    /*
    获取External Volume信息
    */
    public Volume getVolume() {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
    
        Volume volume = odps.volumes().get(projectName, extVolumeName);
        return volume;
    }

Obtenir un itérateur d'informations sur les External Volumes

  • Iterator

    /**
    * 获取默认Project的所有Volume信息迭代器
    *
    * @return Volume迭代器
    */
    public Iterator<Volume> iterator() 
    
        /**
    * 获取Volume信息迭代器
    *
    * @param projectName 指定Project名称
    * @return Volume迭代器
    */
    public Iterator<Volume> iterator(final String projectName)
    
        /**
    * 获取Volume信息迭代器
    *
    * @param filter 过滤条件
    * @return Volume迭代器
    */
    public Iterator<Volume> iterator(final VolumeFilter filter)
    
        /**
    * 获取Volume信息迭代器
    *
    * @param projectName 所在Project名称
    * @param filter 过滤条件
    * @return Volume迭代器
    */
    public Iterator<Volume> iterator(final String projectName, final VolumeFilter filter)
  • Exemple Iterator

    /*
    获取volume迭代器
    */
    public Iterator<Volume> getVolumeIterator() {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
    
        VolumeFilter volumeFilter = new VolumeFilter();
        volumeFilter.setName(extVolumeName);
    
        Iterator<Volume> iterator = odps.volumes().iterator(projectName, volumeFilter);
        return iterator;
    }

Supprimer un External Volume

  • Delete

    /**
    * 删除External Volume
    *
    * @param volumeName External Volume名
    * @throws OdpsException
    */
    public void delete(String volumeName)
    
    /**
    * 删除External Volume
    *
    * @param projectName External Volume所在Project
    * @param volumeName External Volume名
    * @throws OdpsException
    */
    public void delete(String projectName, String volumeName)
  • Exemple Delete

    /*
    删除External Volume
    */
    public void deleteVolume() {
        String projectName = "test_project";
        String extVolumeName = "test_ext_1";
    
        try {
            odps.volumes().delete(projectName, extVolumeName);
        } catch (OdpsException e) {
            throw new RuntimeException(e);
        }
    }