文档首页/ 图引擎服务 GES/ API参考/ 业务面API/ 内存版/ Job管理API/ 导出job返回结果到文件(2.2.1)
更新时间:2024-05-23 GMT+08:00

导出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

POST /ges/v1.0/{project_id}/graphs/{graph_name}/jobs/{job_id}/action?action_id=export-result
表1 路径参数

参数

是否必选

类型

说明

project_id

String

项目ID。获取方法请参见获取项目ID

graph_name

String

图名称。

job_id

String

Response对应的任务Job ID。

请求参数

表2 Body参数说明

参数

是否必选

类型

说明

exportPath

String

导出路径。

fileName

String

导出文件名。

obsParameters

String

OBS认证参数。具体请见表3

paginate

Object

分页参数,导出异步任务API默认关闭分页,具体请见表表4

erase

Boolean

导出后是否删除原job任务,取值为true或false,默认值为true即表示默认删除job并释放资源。

表3 obsParameters参数说明

参数

是否必选

类型

说明

accessKey

string

ak值。

secretKey

string

sk值。

表4 paginate中各要素说明

参数

是否必选

类型

说明

enable

Bool

是否开启分页,默认为false,需要开启分页时,需输入值true。

rowCountPerFile

Int

按页导出时,每个文件最大行数,默认10000000。

numThread

Int

按页导出时,并行线程数,默认为8。

maxSizePerFile

Int

按页导出时,每个文件大小的最大值,单位是byte。

  • 分页参数说明
    1. 当分页参数开启状态下,请求体中fileName代表目录名,目录下存放分页的文件;分页参数关闭时,fileName代表文件名。导出前请保证文件名指向的路径为空,确保导出时不会覆盖OBS上已有数据。
    2. 当numThread的值大于GES图实例使用的机器cpu数时,会配置为机器cpu数。
    3. rowCountPerFile的值会影响实际使用的线程数。即当结果集大小和rowCountPerFile的比值小于numThread时,会使用这个比值作为线程数。
    4. 如果请求被用户取消,已上传到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编号作为前缀。

响应参数

表5 响应Body参数说明

参数

类型

说明

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"
        }
    }

    目前Cypher只支持普通值类型(如属性值、数字、字符串等)导出,对于复合值类型(如列表、Map)和点边对象暂不支持导出。例如:

    • 下列语句的结果可以正常导出:

      match (n) return id(n) limit 10

      match (n) return n.age, n.occupation

      match (n)-[r]->(m) return n.Rating limit 10

      unwind [1,2,3] as p return p

    • 下列语句的结果,由于结果中包含对象或者复合值类型,导出的txt会包含空值或者空行:

      return [1,2,3], {a:1}

      match (n) return n limit 10

      match (n)-[r]->(m) return r limit 10

响应示例

状态码: 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文件格式

  1. 算法结果举例,例如Louvain.txt内容如下:
    # modularity: 0.4269691347613425,
    #community_num: 4,
    #runtime: 0.003784,
    #data_total_size: 34
    #community:
    1,1
    2,1
    …
  2. 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