¿Cómo puedo resolver los errores de procesamiento en Amazon Neptune Bulk Loader?

4 minutos de lectura
0

Estoy intentando usar Amazon Neptune Bulk Loader para cargar datos desde un bucket de Amazon Simple Storage Service (Amazon S3). Sin embargo, algunas de las solicitudes fallan. ¿Cómo puedo solucionar este problema?

Descripción breve

Para solucionar problemas en las solicitudes de datos que siguen fallando, compruebe el estado de cada trabajo. A continuación, identifique los trabajos fallidos de la siguiente manera:

  • Use la API Bulk Loader predeterminada para cada carga individual y compruebe el estado de cada trabajo.
  • Utilice un script de administración y un script automatizado en un solo trabajo. Puede crear y ejecutar el script automatizado en un sistema Linux o UNIX.

Tenga en cuenta estas limitaciones:

  • La API Neptune Bulk Loader no proporciona una vista instantánea de todas las operaciones de carga.
  • Si la autorización de AWS Identity and Access Management (IAM) está habilitada en el clúster de Neptune, se deben firmar las solicitudes a la API de carga masiva.
  • La API Bulk Loader almacena en caché solo la información de los últimos 1024 trabajos de carga. Solo almacena los detalles de los últimos 10 000 errores por trabajo.

Resolución

Usa la API de carga masiva predeterminada

1.    Recupera los identificadores del cargador:

$ curl -G  'https://neptunedemo-cluster.cluster-cw7ehemc1eeo.us-east-1.neptune.amazonaws.com:8182/loader'|jq
{
  "status": "200 OK",
  "payload": {
    "loadIds": [
      "c32bbd24-99a7-45ee-972c-21b7b9cab3e2",
      "6f6342fb-4ea3-452c-ac69-b4d117e37d5a",
      "647114a6-6ed4-4018-896c-e84a08fcf864",
      "521d33fa-7050-44d7-a961-b64ef4e2d1db",
      "d0d4714e-7cf8-415e-89f5-d07ed2732bf2"
    ]
  }
}

2.    Compruebe el estado de cada trabajo, uno por uno, para comprobar que el trabajo se ha realizado correctamente:

curl -G 'https://neptunedemo-cluster.cluster-cw7ehemc1eeo.us-east-1.neptune.amazonaws.com:8182/loader/c32bbd24-99a7-45ee-972c-21b7b9cab3e2?details=true&errors=true&page=1&errorsPerPage=3'|jq
{
  "status": "200 OK",
  "payload": {
    "feedCount": [
      {
        "LOAD_COMPLETED": 2
      }
    ],
    "overallStatus": {
      "fullUri": "s3://demodata/neptune/",
      "runNumber": 5,
      "retryNumber": 0,
      "status": "LOAD_COMPLETED",
      "totalTimeSpent": 3,
      "startTime": 1555574461,
      "totalRecords": 8,
      "totalDuplicates": 8,
      "parsingErrors": 0,
      "datatypeMismatchErrors": 0,
      "insertErrors": 0
    },
    "errors": {
      "startIndex": 0,
      "endIndex": 0,
      "loadId": "c32bbd24-99a7-45ee-972c-21b7b9cab3e2",
      "errorLogs": []
    }
  }
}

Use un script de administración

Puede utilizar un script de administración para identificar un trabajo fallido de Neptune Bulk Loader en su proceso de producción. El script de administración genera una salida en el siguiente formato para todos los trabajos de carga:

Startime-loadid:status,S3location,Errors

Nota: El script de administración se puede utilizar desde cualquier sistema Linux que tenga acceso al clúster de Neptune.

Cree y ejecute el script automatizado en un sistema Linux o UNIX

1.    Cree el script con un editor de texto:

$ vi script

2.    Asegúrese de reemplazar cluster-endpoint:Port por los valores adecuados:

cluster_ep="https://cluster-endpoint:Port/loader"

for loadId in $(curl --silent -G "${cluster_ep}?details=true" | jq '.payload.loadIds[]');
do
        clean_loadId=$(echo -n ${loadId} | tr -d '"')
        time=$(date -d@$(curl --silent -G "${cluster_ep}/${clean_loadId}?details=true" | jq '.payload.overallStatus.startTime'))
        echo -n $time '-'
        echo -n ${clean_loadId}: $(curl --silent -G "${cluster_ep}/${clean_loadId}?details=true" | jq '.payload.overallStatus.status')
        echo -n ',S3 LOCATION': $(curl --silent -G "${cluster_ep}/${clean_loadId}?details=true" | jq '.payload.overallStatus.fullUri')
        echo -n ',ERRORS': $(curl --silent -G "${cluster_ep}/${clean_loadId}?details=truei&errors=true&page=1&errorsPerPage=3" | jq '.payload.errors.errorLogs')

        echo
done

3.    Guarde el script y, a continuación, proporcione los permisos para que se ejecute:

chmod +x script

4.    Instale la biblioteca dependiente:

sudo yum install jq

5.    Ejecute el script:

$ ./script

Este es un ejemplo de salida:

Thu Apr 18 08:01:01 UTC 2019 -c32bbd24-99a7-45ee-972c-21b7b9cab3e2: "LOAD_COMPLETED",S3 LOCATION: "s3://demodata/neptune/",ERRORS: null
Fri Apr 5 07:04:00 UTC 2019 -6f6342fb-4ea3-452c-ac69-b4d117e37d5a: "LOAD_COMPLETED",S3 LOCATION: "s3://demodata/neptune/",ERRORS: null
Fri Apr 5 07:01:30 UTC 2019 -647114a6-6ed4-4018-896c-e84a08fcf864: "LOAD_COMPLETED",S3 LOCATION: "s3://demodata/neptune/",ERRORS: null
Tue Mar 19 17:36:02 UTC 2019 -521d33fa-7050-44d7-a961-b64ef4e2d1db: "LOAD_COMPLETED",S3 LOCATION: "s3://demodata/neptune/",ERRORS: null
Tue Mar 19 17:35:45 UTC 2019 -d0d4714e-7cf8-415e-89f5-d07ed2732bf2: "LOAD_COMPLETED",S3 LOCATION: "s3://demodata/neptune/",ERRORS: null

Información relacionada

Ejemplo: Carga de datos en una instancia de base de datos de Neptune

API de obtención de estado de Neptune Loader

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 4 años