Create Download Request¶
创建文件下载任务。
前提条件¶
已启动数据读取通道,用于创建文件下载任务,且数据读取通道未启用跨源分析功能。详细信息,参见 下载文件。
请求格式¶
POST https://{apigw-address}/data-federation/v2.0/channels/read/{channelId}/download-request
请求参数(URI)¶
名称 |
位置(Path/Query) |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|---|
orgId |
Query |
必需 |
String |
用户所属的组织ID。如何获取orgId信息>> |
channelId |
Path |
必需 |
String |
通道ID。 |
请求参数(Body)¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
taskName |
必需 |
String |
指定文件下载任务名称。 |
sourceName |
必需 |
String |
指定读通道绑定的数据源别名(目前支持HIVE(EnOS)数据源)。 |
querySql |
必需 |
String |
指定下载文件的SQL语句。 |
filePackageName |
必需 |
String |
指定下载文件的名称。 |
files |
非必需 |
JSONObject |
下载文件配置信息,详见 文件配置结构体 |
callbackURL |
可选 |
String |
通过 URL 回调下载结果,接口请求方法为 POST。返回参数详见 下载任务回调函数请求结构体 |
selfDefineQueuePara |
可选 |
String |
设置Hive下载任务参数,分隔符为 |
文件配置结构体 ¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
split |
必需 |
Boolean |
指定是否启用分区下载文件(true:分区;false:不分区)。 |
encoding |
必需 |
String |
指定文件编码方式(可选 utf-8 或 gbk)。 |
delimiter |
String |
Boolean |
指定字段分隔符(可选 |
fileHeader |
必需 |
List<String> |
指定文件表头,分隔符为 |
fileRename |
可选 |
List<JSONObject> |
启用分区下载文件时,指定分区文件的名称,详见 分区文件名结构体 |
下载任务回调函数请求结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
id |
String |
下载任务ID。 |
returnCode |
String |
0:下载成功,返回 URL 为下载数据的链接;非 0:下载失败,返回的 URL 为对应下载失败的链接。 |
download_url |
String |
如果成功,则返回文件下载路径。 |
log_url |
String |
如果失败,则返回错误日志路径。 |
dataSize |
String |
数据文件大小。 |
分区文件名结构体 ¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
file1 |
必需 |
String |
指定分区文件的名称。 |
file2 |
必需 |
String |
指定分区文件的名称。 |
file3 |
必需 |
String |
指定分区文件的名称。 |
响应参数¶
名称 |
数据类型 |
描述 |
---|---|---|
data |
List<JSONObject> |
返回文件下载任务信息,详见 下载任务信息结构体 |
下载任务信息结构体 ¶
名称 |
数据类型 |
描述 |
---|---|---|
taskId |
String |
创建的文件下载任务ID。 |
示例¶
请求示例¶
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"
}
}
}
返回示例¶
{
"msg": "OK",
"code": 0,
"data": {
"taskId": "3049d82e949e47958246ff0136a77fba"
}
}
Java SDK调用示例¶
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();
}
}
}