Uso de la carga por lotes con AWS CLI - Amazon Timestream

Para obtener capacidades similares a las de Amazon Timestream para LiveAnalytics, considere Amazon Timestream para InfluxDB. Ofrece una ingesta de datos simplificada y tiempos de respuesta a las consultas en milisegundos de un solo dígito para realizar análisis en tiempo real. Obtenga más información aquí.

Uso de la carga por lotes con AWS CLI

Configuración

Para empezar a usar la carga por lotes, realice los siguientes pasos:

  1. Instale la AWS CLI según las instrucciones en Acceso a Amazon Timestream para LiveAnalytics mediante la AWS CLI.

  2. Ejecute el siguiente comando para verificar que se hayan actualizado los comandos de la CLI de Timestream. Compruebe que create-batch-load-task esté en la lista.

    aws timestream-write help

  3. Prepare un origen de datos según las instrucciones en Preparación de un archivo de datos de carga por lotes.

  4. Cree una base de datos y una tabla según las instrucciones de Acceso a Amazon Timestream para LiveAnalytics mediante la AWS CLI.

  5. Cree un bucket de S3 para la salida de informes. El bucket debe estar en la misma región. Para obtener más información sobre buckets, consulte Creación, configuración y uso de buckets de Amazon S3.

  6. Cree una tarea de carga de lotes. Para ver los pasos, consulte Creación de una tarea de carga de lotes.

  7. Confirme el estado de la tarea. Para ver los pasos, consulte Descripción de la tarea de carga por lotes.

Creación de una tarea de carga de lotes

Puede crear una tarea de carga por lotes con el comando create-batch-load-task. Al crear una tarea de carga por lotes mediante la CLI, puede usar un parámetro JSON, cli-input-json, que le permite agregar los parámetros en un único fragmento de JSON. También puede separar esos detalles mediante otros varios parámetros, como data-model-configuration, data-source-configuration, report-configuration, target-database-name y target-table-name.

Para ver un ejemplo, consulta Ejemplo de creación de una tarea de carga por lotes

Descripción de la tarea de carga por lotes

Puede recuperar la descripción de una tarea de carga por lotes de la siguiente manera.

aws timestream-write describe-batch-load-task --task-id <value>

A continuación, se muestra un ejemplo de respuesta.

{ "BatchLoadTaskDescription": { "TaskId": "<TaskId>", "DataSourceConfiguration": { "DataSourceS3Configuration": { "BucketName": "test-batch-load-west-2", "ObjectKeyPrefix": "sample.csv" }, "CsvConfiguration": {}, "DataFormat": "CSV" }, "ProgressReport": { "RecordsProcessed": 2, "RecordsIngested": 0, "FileParseFailures": 0, "RecordIngestionFailures": 2, "FileFailures": 0, "BytesIngested": 119 }, "ReportConfiguration": { "ReportS3Configuration": { "BucketName": "test-batch-load-west-2", "ObjectKeyPrefix": "<ObjectKeyPrefix>", "EncryptionOption": "SSE_S3" } }, "DataModelConfiguration": { "DataModel": { "TimeColumn": "timestamp", "TimeUnit": "SECONDS", "DimensionMappings": [ { "SourceColumn": "vehicle", "DestinationColumn": "vehicle" }, { "SourceColumn": "registration", "DestinationColumn": "license" } ], "MultiMeasureMappings": { "TargetMultiMeasureName": "test", "MultiMeasureAttributeMappings": [ { "SourceColumn": "wgt", "TargetMultiMeasureAttributeName": "weight", "MeasureValueType": "DOUBLE" }, { "SourceColumn": "spd", "TargetMultiMeasureAttributeName": "speed", "MeasureValueType": "DOUBLE" }, { "SourceColumn": "fuel", "TargetMultiMeasureAttributeName": "fuel", "MeasureValueType": "DOUBLE" }, { "SourceColumn": "miles", "TargetMultiMeasureAttributeName": "miles", "MeasureValueType": "DOUBLE" } ] } } }, "TargetDatabaseName": "BatchLoadExampleDatabase", "TargetTableName": "BatchLoadExampleTable", "TaskStatus": "FAILED", "RecordVersion": 1, "CreationTime": 1677167593.266, "LastUpdatedTime": 1677167602.38 } }

Enumeración de tareas de carga por lotes

Puede enumerar las tareas de carga por lotes de la siguiente manera.

aws timestream-write list-batch-load-tasks

Aparece una salida como se muestra a continuación.

{ "BatchLoadTasks": [ { "TaskId": "<TaskId>", "TaskStatus": "FAILED", "DatabaseName": "BatchLoadExampleDatabase", "TableName": "BatchLoadExampleTable", "CreationTime": 1677167593.266, "LastUpdatedTime": 1677167602.38 } ] }

Reanudación de la tarea de carga por lotes

Puede reanudar una tarea de carga por lotes de la siguiente manera.

aws timestream-write resume-batch-load-task --task-id <value>

Una respuesta puede indicar que se ha realizado correctamente o contener información sobre un error.

Ejemplo de creación de una tarea de carga por lotes

  1. Cree una base de datos de Timestream para LiveAnalytics con un nombre BatchLoad y una tabla con el nombre BatchLoadTest. Compruebe y, si es necesario, ajuste los valores de MemoryStoreRetentionPeriodInHours y MagneticStoreRetentionPeriodInDays.

    aws timestream-write create-database --database-name BatchLoad \ aws timestream-write create-table --database-name BatchLoad \ --table-name BatchLoadTest \ --retention-properties "{\"MemoryStoreRetentionPeriodInHours\": 12, \"MagneticStoreRetentionPeriodInDays\": 100}"
  2. Con la consola, cree un bucket de S3 y copie el archivo sample.csv en esa ubicación. Puede descargar un archivo CSV de muestra en CSV de muestra.

  3. Con la consola, cree un bucket de S3 para que Timestream para LiveAnalytics redacte un informe si la tarea de carga por lotes finaliza con errores.

  4. Cree una tarea de carga de lotes. Asegúrese de reemplazar $INPUT_BUCKET y $REPORT_BUCKET con los buckets que creó en los pasos anteriores.

    aws timestream-write create-batch-load-task \ --data-model-configuration "{\ \"DataModel\": {\ \"TimeColumn\": \"timestamp\",\ \"TimeUnit\": \"SECONDS\",\ \"DimensionMappings\": [\ {\ \"SourceColumn\": \"vehicle\"\ },\ {\ \"SourceColumn\": \"registration\",\ \"DestinationColumn\": \"license\"\ }\ ], \"MultiMeasureMappings\": {\ \"TargetMultiMeasureName\": \"mva_measure_name\",\ \"MultiMeasureAttributeMappings\": [\ {\ \"SourceColumn\": \"wgt\",\ \"TargetMultiMeasureAttributeName\": \"weight\",\ \"MeasureValueType\": \"DOUBLE\"\ },\ {\ \"SourceColumn\": \"spd\",\ \"TargetMultiMeasureAttributeName\": \"speed\",\ \"MeasureValueType\": \"DOUBLE\"\ },\ {\ \"SourceColumn\": \"fuel_consumption\",\ \"TargetMultiMeasureAttributeName\": \"fuel\",\ \"MeasureValueType\": \"DOUBLE\"\ },\ {\ \"SourceColumn\": \"miles\",\ \"MeasureValueType\": \"BIGINT\"\ }\ ]\ }\ }\ }" \ --data-source-configuration "{ \"DataSourceS3Configuration\": {\ \"BucketName\": \"$INPUT_BUCKET\",\ \"ObjectKeyPrefix\": \"$INPUT_OBJECT_KEY_PREFIX\" },\ \"DataFormat\": \"CSV\"\ }" \ --report-configuration "{\ \"ReportS3Configuration\": {\ \"BucketName\": \"$REPORT_BUCKET\",\ \"EncryptionOption\": \"SSE_S3\"\ }\ }" \ --target-database-name BatchLoad \ --target-table-name BatchLoadTest

    El comando anterior devuelve la siguiente salida:

    { "TaskId": "TaskId " }
  5. Compruebe el progreso de la tarea. Asegúrese de reemplazar $TASK_ID con el identificador de tarea que se devolvió en el paso anterior.

    aws timestream-write describe-batch-load-task --task-id $TASK_ID

Ejemplo de resultado

{ "BatchLoadTaskDescription": { "ProgressReport": { "BytesIngested": 1024, "RecordsIngested": 2, "FileFailures": 0, "RecordIngestionFailures": 0, "RecordsProcessed": 2, "FileParseFailures": 0 }, "DataModelConfiguration": { "DataModel": { "DimensionMappings": [ { "SourceColumn": "vehicle", "DestinationColumn": "vehicle" }, { "SourceColumn": "registration", "DestinationColumn": "license" } ], "TimeUnit": "SECONDS", "TimeColumn": "timestamp", "MultiMeasureMappings": { "MultiMeasureAttributeMappings": [ { "TargetMultiMeasureAttributeName": "weight", "SourceColumn": "wgt", "MeasureValueType": "DOUBLE" }, { "TargetMultiMeasureAttributeName": "speed", "SourceColumn": "spd", "MeasureValueType": "DOUBLE" }, { "TargetMultiMeasureAttributeName": "fuel", "SourceColumn": "fuel_consumption", "MeasureValueType": "DOUBLE" }, { "TargetMultiMeasureAttributeName": "miles", "SourceColumn": "miles", "MeasureValueType": "DOUBLE" } ], "TargetMultiMeasureName": "mva_measure_name" } } }, "TargetDatabaseName": "BatchLoad", "CreationTime": 1672960381.735, "TaskStatus": "SUCCEEDED", "RecordVersion": 1, "TaskId": "TaskId ", "TargetTableName": "BatchLoadTest", "ReportConfiguration": { "ReportS3Configuration": { "EncryptionOption": "SSE_S3", "ObjectKeyPrefix": "ObjectKeyPrefix ", "BucketName": "amzn-s3-demo-bucket" } }, "DataSourceConfiguration": { "DataSourceS3Configuration": { "ObjectKeyPrefix": "sample.csv", "BucketName": "amzn-s3-demo-source-bucket" }, "DataFormat": "CSV", "CsvConfiguration": {} }, "LastUpdatedTime": 1672960387.334 } }