全部產品
Search
文件中心

MaxCompute:External Volume SDK說明

更新時間:Feb 28, 2024

本文為您介紹使用Java SDK操作External Volume的說明。

專案依賴

使用SDK操作External Volume前需要添加如下依賴。

<dependency>
  <groupId>com.aliyun.odps</groupId>
  <artifactId>odps-sdk-core</artifactId>
  <version>0.44.0-SNAPSHOT</version>
</dependency>

建立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
    
    
    
  • 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);  
    }

擷取指定External Volume資訊

  • 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)
    
  • Get樣本

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

擷取External Volume資訊迭代器

  • 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)
  • 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;
    }

刪除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)
  • 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);
        }
    }