导出job返回结果到文件(2.2.1)
功能介绍
用于将异步任务(jobId)的执行结果(result)导出到文件。
- 支持算法列表:
- pagerank、personalrank、pixie
- louvain、label_propagation、connect_component
- kcore
- sssp、shortest_path(含time_window_shortest_path)、shortest_path_of_vertex_sets、all_shortest_paths、n_paths
- traingle_count、cluster_coefficient、degree_correlation、closeness
- link_prediction
- betweenness、edge_betweenness、od_betweenness
- 支持查询列表
URI
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
project_id |
是 |
String |
项目ID。获取方法请参见获取项目ID。 |
graph_name |
是 |
String |
图名称。 |
job_id |
是 |
String |
Response对应的任务Job ID。 |
请求参数
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
exportPath |
是 |
String |
导出路径。 |
fileName |
否 |
String |
导出文件名。 |
obsParameters |
是 |
String |
OBS认证参数。具体请见表3。 |
paginate |
否 |
Object |
分页参数,导出异步任务API默认关闭分页,具体请见表表4。 |
erase |
否 |
Boolean |
导出后是否删除原job任务,取值为true或false,默认值为true即表示默认删除job并释放资源。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
enable |
否 |
Bool |
是否开启分页,默认为false,需要开启分页时,需输入值true。 |
rowCountPerFile |
否 |
Int |
按页导出时,每个文件最大行数,默认10000000。 |
numThread |
否 |
Int |
按页导出时,并行线程数,默认为8。 |
maxSizePerFile |
否 |
Int |
按页导出时,每个文件大小的最大值,单位是byte。 |
- 分页参数说明
- 当分页参数开启状态下,请求体中fileName代表目录名,目录下存放分页的文件;分页参数关闭时,fileName代表文件名。导出前请保证文件名指向的路径为空,确保导出时不会覆盖OBS上已有数据。
- 当numThread的值大于GES图实例使用的机器cpu数时,会配置为机器cpu数。
- rowCountPerFile的值会影响实际使用的线程数。即当结果集大小和rowCountPerFile的比值小于numThread时,会使用这个比值作为线程数。
- 如果请求被用户取消,已上传到OBS中的数据不会删除,有关取消Job的API详见取消Job(1.0.0)。
- 分页开启时文件名的命名规则:
分页选项中enable参数为true时,fileName代表一个目录,目录下的文件使用线程id与文件编号的组合命名,中间使用“.”连接。例如,对于320万条数据,不同配置下第一个文件名和最后一个文件名示例如下:
rowCountPerFile
10万
10万
100万
100万
500万
numThread
2
48
2
5
2
实际使用的线程
2
32
2
4
1
单线程生成文件数
16
1
2
1
1
第一个文件名
00.000.txt
00.000.txt
00.00.txt
00.00.txt
00.00.txt
最后一个文件名
01.015.txt
031.000.txt
01.01.txt
03.00.txt
00.00.txt
百亿图进行数据导出时,为多节点数据同时导出,文件名前会使用机器id编号作为前缀。
响应参数
参数 |
类型 |
说明 |
---|---|---|
errorMessage |
String |
系统提示信息。
|
errorCode |
String |
系统提示信息。
|
jobId |
String |
执行该异步任务的jobId。 可以查询jobId查看任务执行状态、获取返回结果,详情参考查询Job状态(1.0.0)-业务面。 |
请求示例
- 请求示例1,异步任务的执行结果导出到OBS文件,导出路径为demo_movie/,导出文件名louvain,导出后删除原job任务。
POST /ges/v1.0/{project_id}/graphs/{graph_name}/jobs/{job_id}/action?action_id=export-result { "exportPath": "demo_movie/", "fileName": "louvain", "erase": true, "obsParameters": { "accessKey": "xxxx", "secretKey": "xxxx" } }
- 请求示例2,异步任务的执行结果导出到OBS文件,导出路径为demo_movie/,导出文件名louvain,默认关闭分页,按页导出时,每个文件最大行数100000。
POST /ges/v1.0/{project_id}/graphs/{graph_name}/jobs/{job_id}/action?action_id=export-result { "exportPath": "demo_movie/", "fileName": "louvain", "paginate":{ "enable":true, "numThread":2, "rowCountPerFile":100000, }, "obsParameters": { "accessKey": "xxxx", "secretKey": "xxxx" } }
响应示例
状态码: 200
成功响应示例
HttpStatusCode: 200 { "jobId": "f99f60f1-bba6-4cde-bd1a-ff4bdd1fd500000168232" }
状态码: 400
失败响应示例
HttpStatusCode: 400 { "errorMessage": "graph [demo] is not found", "errorCode": "GES.8011" }
状态码
返回值 |
说明 |
---|---|
400 Bad Request |
请求错误。 |
401 Unauthorized |
鉴权失败。 |
403 Forbidden |
没有操作权限。 |
404 Not Found |
找不到资源。 |
500 Internal Server Error |
服务内部错误。 |
503 Service Unavailable |
服务不可用。 |
错误码
请参见错误码。
导出txt文件格式
- 算法结果举例,例如Louvain.txt内容如下:
# modularity: 0.4269691347613425, #community_num: 4, #runtime: 0.003784, #data_total_size: 34 #community: 1,1 2,1 …
- Cypher结果举例如下:
- 示例一
match (n:user)-[r]->(m:movie) return id(n),n.Name, n.Occupation, n.Age,r.Score,m.ChineseTitle
示例结果:
#data_total_size:1209 #data_return_size:1209 #data_offset:0 #records: Vivian,薇薇安,artist,25-34,5,致命武器 Vivian,薇薇安,artist,25-34,4,抚养亚历桑纳 Mercedes,默西迪丝,K-12 student,Under 18,3,致命武器 Mercedes,默西迪丝,K-12 student,Under 18,3,勇闯夺命岛 …
- 示例二
match (n)-->(m) where id(n)='Vivian' return labels(m),count(*)
示例结果:
#data_total_size:2 #data_return_size:2 #data_offset:0 #records: user,5 movie,2
- 示例一