

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

# Neptune 加载器响应 Get-Status
<a name="load-api-reference-status-response"></a>

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

## Neptune 加载器 Get-Status 响应 JSON 布局
<a name="load-api-reference-status-response-layout"></a>

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

```
{
    "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 加载 Get-Status `overallStatus`器和响应对象 `failedFeeds`
<a name="load-api-reference-status-response-objects"></a>

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

以下字段显示在所有负载的 `overallStatus` 对象中，以及每个失败馈送的 `failedFeeds` 对象中：
+ **`fullUri` ** – 要加载的一个或多个文件的 URI。

  *类型*：*字符串*

  *格式*：`s3://bucket/key`。
+ **`runNumber`** – 此加载或馈送的运行编号。此编号将在加载重新启动时增加。

  *类型：**无符号整数*
+ **`retryNumber`** – 此加载或馈送的重试编号。此编号将在加载程序自动重试馈送或加载时递增。

  *类型：**无符号整数*
+ **`status`** – 返回的加载状态或馈送状态。`LOAD_COMPLETED` 指示加载成功，无问题。有关其它加载状态消息的列表，请参阅[Neptune 加载程序错误和源消息](loader-message.md)。

  *类型：**字符串*。
+ **`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 数据的特殊注意事项](load-api-reference-load.md#load-api-reference-load-parameters-opencypher)。
+ **`parsingErrors`** – 遇到的解析错误的数量。

  *类型：**无符号整数*
+ **`datatypeMismatchErrors`** – 数据类型与给定的数据不匹配的记录的数量。

  *类型：**无符号整数*
+ **`insertErrors`** – 由于错误而无法插入的记录的数量。

  *类型：**无符号整数*

## Neptune 加载器响应对象 Get-Status `errors`
<a name="load-api-reference-status-errors"></a>

错误分为以下几类：
+ **`Error 400`** - 无效的 `loadId` 返回 HTTP `400` 错误请求错误。此消息描述错误。
+ **`Error 500`** – 无法处理的有效请求返回 HTTP `500` 内部服务器错误。此消息描述错误。

有关加载程序在出现错误时返回的错误和馈送消息的列表，请参阅[Neptune 加载程序错误和源消息](loader-message.md)。

当发生错误时，会在响应的 `BODY` 中返回一个 JSON `errors` 对象，其中包含以下字段：
+ **`startIndex`** – 包含的第一个错误的索引。

  *类型：**无符号整数*
+ **`endIndex`** – 包含的最后一个错误的索引。

  *类型：**无符号整数*
+ **`loadId`** – 加载的 ID。可通过将 `errors` 参数设置为 `TRUE` 来使用此 ID 打印错误。

  *类型：**字符串*。
+ **`errorLogs`** – 错误列表。

  *类型：**列表*

## Neptune 加载器响应对象 Get-Status `errorLogs`
<a name="load-api-reference-error-logs"></a>

加载程序获取状态响应中 `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`** – 描述错误的消息。

  这可以是与错误代码关联的通用消息，也可以是包含详细信息（例如有关缺失 from/to 顶点或解析错误的信息）的特定消息。
+ **`fileName`** – 馈送的名称。
+ **`recordNum`** – 如果出现解析错误，则这是记录文件中无法解析的记录号。如果记录号不适用于错误，或者无法确定，则将其设置为零。

例如，如果批量加载程序在 RDF `nquads` 文件中遇到诸如以下内容的错误行，则会生成解析错误：

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

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

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