Create Download Request

Create a file download task.

Prerequisites

A read channel for downloading files is already started and running, and the channel must have the cross-source analysis function disabled. For more information, see Downloading Files.

Request Format

POST https://{apigw-address}/data-federation/v2.0/channels/read/{channelId}/download-request

Request Parameters (URI)

Name Location (Path/Query) Mandatory/Optional Data Type Description
orgId Query Mandatory String The organization ID. How to get the orgId>>
channelId Path Mandatory String Channel ID.

Request Parameters (Body)

Name Mandatory/Optional Data Type Description
taskName Mandatory String Specify the name of the file download task.
sourceName Mandatory String Specify the data source alias (currently supporting HIVE(EnOS) data source).
querySql Mandatory String Specify the SQL statement for downloading files.
filePackageName Mandatory String Specify name of the downloaded file.
files Optional List<JSONObject> Configuration of the downloaded file. For details, see File Configuration Struct

File Configuration Struct

Name Mandatory/Optional Data Type Description
split Mandatory Boolean Specify whether to enable partition for the downloaded file (true: enable partition; false: disable partition).
encoding Mandatory String Specify the file encoding method (options are utf-8 and gbk).
delimiter String Boolean Specify the field delimiter (options are \t, ,, and ;).
fileHeader Mandatory List<String> Specify the file table header, separated by ,.
fileRename Optional List<JSONObject> When enabling partition for the downloaded file, specify file part names. For details, see File Rename Struct

File Rename Struct

Name Mandatory/Optional Data Type Description
file1 Mandatory String Specify the file part name.
file2 Mandatory String Specify the file part name.
file3 Mandatory String Specify the file part name.

Response Parameters

Name Data Type Description
data List<JSONObject> Return the information of downloaded file, see Task ID Struct

Task ID

Name Data Type Description
taskId String ID of the created file download task.

Samples

Request Sample

url: https://{apigw-address}/data-federation/v2.0/channels/read/{channelId}/download-request?orgId={}

method: POST

request body

{
  "taskName": "test_federation_download_openapi",
  "sourceName": "hive_enos"
  "querySql": "select * from students",
  "filePackageName": "studentsOpenAPI",
  "files": {
    "split": true,
    "encoding": "utf-8",
    "delimiter": ",",
    "fileHeader": [
      "c1",
      "c2",
      "c3",
      "c4",
      "c5",
      "c6"
    ],
    "fileRename": {
      "1": "group1",
      "2": "group2",
      "3": "group3",
      "4": "group4"
    }
  }
}

Return Sample

{
  "msg": "OK",
  "code": 0,
  "data": {
    "taskId": "3049d82e949e47958246ff0136a77fba"
  }
}

Java SDK Sample

import com.alibaba.fastjson.JSONObject;
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envision.apim.poseidon.request.PoseidonRequest;
import com.google.common.net.HttpHeaders;
import org.apache.commons.codec.binary.Hex;
import org.junit.Test;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;

public class Sample {

    private static String accessKey = "AccessKey of your APP";
    private static String secretKey = "SecretKey of your APP";
    private static String orgId = "yourOrgId";
    private static String chId = "yourChannelId";
    private static String url = "https://{domain_url}";

    private static class Request extends PoseidonRequest {

        public void setQueryParam(String key, Object value) {
            queryEncodeParams().put(key, value);
        }

        public void setMethod(String method) {
            this.method = method;
        }

        public void setBodyParams(String key, Object value) {
            bodyParams().put(key, value);
        }

        private String method;

        @Override
        public String baseUri() {
            return "";
        }

        @Override
        public String method() {
            return method;
        }
    }

    @Test
    public void downloadRequest() {
        Request request = new Request();
        request.setQueryParam("orgId", orgId);
        request.setMethod("POST");
        request.setBodyParams("taskName", "yourTaskName");
        request.setBodyParams("sourceName", "hive_enos");
        request.setBodyParams("querySql", "select * from students");
        request.setBodyParams("filePackageName", "studentsOpenAPI");
        Map<String, Object> files = new HashMap<>();
        files.put("split", true);
        files.put("encoding", "utf-8");
        files.put("delimiter", ",");
        List<String> fileHeaders = new ArrayList<>();
        fileHeaders.add("c1");
        fileHeaders.add("c2");
        files.put("fileHeader", fileHeaders);
        Map<String, String> fileRename = new HashMap<>();
        fileRename.put("1", "group1");
        fileRename.put("2", "group2");
        files.put("fileRename", fileRename);
        request.setBodyParams("files", files);
        try {
            JSONObject response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey))
                    .url(url + "/data-federation/v2.0/channels/read/" + chId + "/download-request")
                    .getResponse(request, JSONObject.class);
            System.out.println(response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}