Neptune 加载程序获取状态响应 - Amazon Neptune

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Neptune 加载程序获取状态响应

以下来自 Neptune Get-Status 的示例响应API描述了响应的总体结构,解释了各种字段及其数据类型,以及错误处理和错误日志的详细信息。

Neptune Loader 获取状态响应布局 JSON

加载程序状态响应的总体布局如下:

{ "status" : "200 OK", "payload" : { "feedCount" : [ { "LOAD_FAILED" : number } ], "overallStatus" : { "fullUri" : "s3://bucket/key", "runNumber" : number, "retryNumber" : number, "status" : "string", "totalTimeSpent" : number, "startTime" : number, "totalRecords" : number, "totalDuplicates" : number, "parsingErrors" : number, "datatypeMismatchErrors" : number, "insertErrors" : number, }, "failedFeeds" : [ { "fullUri" : "s3://bucket/key", "runNumber" : number, "retryNumber" : number, "status" : "string", "totalTimeSpent" : number, "startTime" : number, "totalRecords" : number, "totalDuplicates" : number, "parsingErrors" : number, "datatypeMismatchErrors" : number, "insertErrors" : number, } ], "errors" : { "startIndex" : number, "endIndex" : number, "loadId" : "string, "errorLogs" : [ ] } } }

Neptune 加载程序获取状态 overallStatusfailedFeeds 响应对象

为每个失败馈送返回的可能响应(包括错误描述)与 Get-Status 响应中的 overallStatus 对象相同。

以下字段显示在所有负载的 overallStatus 对象中,以及每个失败馈送的 failedFeeds 对象中:

  • fullUri— 要加载URI的一个或多个文件。

    类型:字符串

    格式s3://bucket/key

  • runNumber – 此加载或馈送的运行编号。此编号将在加载重新启动时增加。

    类型:无符号整数

  • retryNumber – 此加载或馈送的重试编号。此编号将在加载程序自动重试馈送或加载时递增。

    类型:无符号整数

  • status – 返回的加载状态或馈送状态。LOAD_COMPLETED 指示加载成功,无问题。有关其它加载状态消息的列表,请参阅Neptune 加载程序错误和源消息

    类型:字符串

  • totalTimeSpent – 解析并插入以进行加载或馈送的数据所耗费的时间(秒)。这不包括提取源文件列表所耗费时间。

    类型:无符号整数

  • totalRecords – 已加载或尝试加载的记录总数。

    类型:无符号整数

    请注意,从CSV文件加载时,记录计数不是指加载的行数,而是指这些行中的单个记录数。例如,以这样一个小CSV文件为例:

    ~id,~label,name,team 'P-1','Player','Stokes','England'

    Neptune 会认为这个文件包含 3 条记录,即:

    P-1 label Player P-1 name Stokes P-1 team England
  • totalDuplicates – 遇到的重复记录的数量。

    类型:无符号整数

    totalRecords计数一样,此值包含CSV文件中单个重复记录的数量,而不是重复行的数量。以这个小CSV文件为例:

    ~id,~label,name,team P-2,Player,Kohli,India P-2,Player,Kohli,India

    加载此文件后返回的状态如下所示,报告总共 6 条记录,其中 3 条是重复的:

    { "status": "200 OK", "payload": { "feedCount": [ { "LOAD_COMPLETED": 1 } ], "overallStatus": { "fullUri": "(the URI of the CSV file)", "runNumber": 1, "retryNumber": 0, "status": "LOAD_COMPLETED", "totalTimeSpent": 3, "startTime": 1662131463, "totalRecords": 6, "totalDuplicates": 3, "parsingErrors": 0, "datatypeMismatchErrors": 0, "insertErrors": 0 } } }

    对于 openCypher 负荷,在以下情况下将计算重复项:

    • 加载程序检测到节点文件中的某行具有的 ID 没有 ID 空间,而该 ID 与另一个没有 ID 空间的 ID 值相同,无论是在另一行中还是属于现有节点。

    • 加载程序检测到节点文件中的某行具有的 ID 有 ID 空间,而该 ID 与另一个有 ID 空间的 ID 值相同,无论是在另一行中还是属于现有节点。

    请参阅 加载 openCypher 数据的特殊注意事项

  • parsingErrors – 遇到的解析错误的数量。

    类型:无符号整数

  • datatypeMismatchErrors – 数据类型与给定的数据不匹配的记录的数量。

    类型:无符号整数

  • insertErrors – 由于错误而无法插入的记录的数量。

    类型:无符号整数

Neptune 加载程序获取状态 errors 响应对象

错误分为以下几类:

  • Error 400— 无效loadId会返回HTTP400错误的请求错误。此消息描述错误。

  • Error 500— 无法处理的有效请求会返回HTTP500内部服务器错误。此消息描述错误。

有关加载程序在出现错误时返回的错误和馈送消息的列表,请参阅Neptune 加载程序错误和源消息

发生错误时,将在响应中返回一个JSONerrors对象,BODY其中包含以下字段:

  • startIndex – 包含的第一个错误的索引。

    类型:无符号整数

  • endIndex – 包含的最后一个错误的索引。

    类型:无符号整数

  • loadId – 加载的 ID。可通过将 errors 参数设置为 TRUE 来使用此 ID 打印错误。

    类型:字符串

  • errorLogs – 错误列表。

    类型:列表

Neptune 加载程序获取状态 errorLogs 响应对象

加载程序获取状态响应中 errors 下的 errorLogs 对象包含一个使用以下字段描述每个错误的对象:

  • errorCode – 识别错误的性质。

    它可能采用下列值之一:

    • PARSING_ERROR

    • S3_ACCESS_DENIED_ERROR

    • FROM_OR_TO_VERTEX_ARE_MISSING

    • ID_ASSIGNED_TO_MULTIPLE_EDGES

    • SINGLE_CARDINALITY_VIOLATION

    • FILE_MODIFICATION_OR_DELETION_ERROR

    • OUT_OF_MEMORY_ERROR

    • INTERNAL_ERROR(当批量加载程序无法确定错误的类型时返回)。

  • errorMessage – 描述错误的消息。

    这可以是与错误代码关联的通用消息,也可以是包含详细信息的特定消息,例如关于缺少起始顶点/结束顶点或解析错误的信息。

  • fileName – 馈送的名称。

  • recordNum – 如果出现解析错误,则这是记录文件中无法解析的记录号。如果记录号不适用于错误,或者无法确定,则将其设置为零。

例如,如果批量加载器在文件中遇到诸如以下内容的错误行,则会生成解析错误:RDFnquads

<http://base#subject> |http://base#predicate> <http://base#true> .

如您所见,上面一行中的第二个 http 应该在前面加上 < 而不是 |。状态响应中 errorLogs 下生成的错误对象如下所示:

{ "errorCode" : "PARSING_ERROR", "errorMessage" : "Expected '<', found: |", "fileName" : "s3://bucket/key", "recordNum" : 12345 },