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

callbackURL

Optional

String

Call back the downlaod result with POST method. For details of the response parameters, see Download Task Callback Request Struct

selfDefineQueuePara

Optional

String

Specify Hive downloading task parameters, separated by ;.

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

Callback Request Struct

Name

Data Type

Description

id

String

Download task ID.

returnCode

String

0: Download succeeded, and the returned URL is for downloading data. Not 0: Download failed, and the returned URL is for error log.

download_url

String

Upon success, return the file download URL.

log_url

String

Upon failure, return the error log URL.

dataSize

String

Data file size.

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",
  "callbackURL":"http://localhost:8080",
  "selfDefineQueuePara":"set mapreduce.map.memory.mb=1024;set mapreduce.reduce.memory.mb=2048",
  "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");
        request.setBodyParams("callbackURL", "http://localhost:8080");
        request.setBodyParams("selfDefineQueuePara", "set mapreduce.map.memory.mb=1024;set mapreduce.reduce.memory.mb=2048");
        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();
        }
    }
}