

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Tâches de streaming pour le traitement de données diffusées en continu
<a name="jobs-streaming"></a>

Une tâche de streaming dans EMR Serverless est un mode de travail qui vous permet d'analyser et de traiter des données de streaming en temps quasi réel. Ces tâches de longue durée interrogent les données de streaming et traitent les résultats en continu au fur et à mesure de leur arrivée. Les tâches de streaming sont particulièrement adaptées aux tâches qui nécessitent un traitement des données en temps réel, telles que les analyses en temps quasi réel, la détection des fraudes et les moteurs de recommandations. Les tâches de streaming EMR sans serveur offrent des optimisations, telles que la résilience intégrée des tâches, une surveillance en temps réel, une gestion améliorée des journaux et l'intégration avec des connecteurs de streaming.

Voici quelques exemples d'utilisation des jobs de streaming :
+ **Analyses en temps quasi réel** : les tâches de streaming dans Amazon EMR Serverless vous permettent de traiter les données de streaming en temps quasi réel. Vous pouvez ainsi effectuer des analyses en temps réel sur des flux de données continus, tels que les données de journal, les données de capteurs ou les données de parcours de navigation afin d'en tirer des informations et de prendre des décisions en temps opportun sur la base des informations les plus récentes.
+ **Détection des fraudes** : utilisez les tâches de streaming pour détecter les fraudes en temps quasi réel dans les transactions financières, les opérations de carte de crédit ou les activités en ligne lorsque vous analysez des flux de données et identifiez des modèles ou des anomalies suspects au fur et à mesure qu'ils se produisent.
+ **Moteurs de recommandation : les** tâches de streaming peuvent traiter les données d'activité des utilisateurs et mettre à jour les modèles de recommandations. Cela ouvre la voie à des recommandations personnalisées et en temps réel basées sur les comportements et les préférences.
+ **Analyse des réseaux sociaux** : les jobs de streaming peuvent traiter les données des réseaux sociaux, telles que les tweets, les commentaires et les publications, afin que les entreprises puissent suivre les tendances, analyser les sentiments et gérer la réputation de la marque en temps quasi réel.
+ **Analyse de l'Internet des objets (IoT)** : les tâches de streaming peuvent gérer et analyser des flux de données à haut débit provenant d'appareils IoT, de capteurs et de machines connectées. Ils peuvent donc exécuter la détection des anomalies, la maintenance prédictive et d'autres cas d'utilisation de l'analytique IoT. 
+ **Analyse du flux de clics** : les tâches de streaming peuvent traiter et analyser les données du flux de clics provenant de sites Web ou d'applications mobiles. Les entreprises qui utilisent de telles données peuvent effectuer des analyses pour en savoir plus sur le comportement des utilisateurs, personnaliser les expériences utilisateur et optimiser les campagnes marketing.
+ **Surveillance et analyse des journaux** : les tâches de streaming peuvent également traiter les données des journaux provenant de serveurs, d'applications et de périphériques réseau. Cela vous permet de détecter les anomalies, de résoudre les problèmes, ainsi que de garantir l'état et les performances du système.

**Principaux avantages**

Les tâches de streaming dans EMR Serverless garantissent automatiquement la *résilience des* tâches, qui est une combinaison des facteurs suivants :
+ **Réessai automatique** : EMR Serverless réessaie automatiquement toutes les tâches qui ont échoué sans aucune intervention manuelle de votre part.
+ **Résilience de la zone de disponibilité (AZ)** : EMR Serverless fait automatiquement passer les tâches de streaming à une AZ saine si l'AZ d'origine rencontre des problèmes.
+ **Gestion des journaux :**
  + **Rotation des journaux** : pour une gestion plus efficace du stockage sur disque, EMR Serverless effectue régulièrement une rotation des journaux pour les tâches de streaming de longue durée. Cela permet d'éviter l'accumulation de journaux qui pourrait consommer tout l'espace disque.
  + **Compaction des journaux** : vous aide à gérer et à optimiser efficacement les fichiers journaux dans le cadre d'une persistance gérée. Le compactage améliore également l'expérience de débogage lorsque vous utilisez le serveur d'historique Spark géré.

**Sources de données et récepteurs de données pris en charge**

EMR Serverless fonctionne avec un certain nombre de sources de données d'entrée et de récepteurs de données de sortie :
+ Sources de données d'entrée prises en charge : Amazon Kinesis Data Streams, Amazon Managed Streaming for Apache Kafka et clusters Apache Kafka autogérés. Par défaut, les versions 7.1.0 et supérieures d'Amazon EMR incluent le connecteur [Amazon Kinesis Data Streams](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-structured-streaming-kinesis.html). Vous n'avez donc pas besoin de créer ou de télécharger de packages supplémentaires.
+ Récepteurs de données de sortie pris en charge : tables AWS Glue Data Catalog, Amazon S3, Amazon Redshift, MySQL, PostgreSQL Oracle, Oracle, Microsoft SQL, Apache Iceberg, Delta Lake et Apache Hudi.

## Considérations et restrictions
<a name="jobs-spark-streaming-considerations"></a>

Lorsque vous utilisez des jobs de streaming, gardez à l'esprit les considérations et limites suivantes.
+ Les jobs de streaming sont pris en charge par les [versions 7.1.0 et supérieures d'Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-710-release.html).
+ EMR Serverless s'attend à ce que les tâches de streaming s'exécutent pendant une longue période. Vous ne pouvez donc pas définir un délai d'exécution pour limiter le temps d'exécution de la tâche.
+ Les jobs de streaming ne sont compatibles qu'avec le moteur Spark, qui repose sur le [framework de streaming structuré](https://spark.apache.org/streaming/).
+ EMR Serverless réessaie indéfiniment des tâches de streaming, et vous ne pouvez pas personnaliser le nombre maximum de tentatives. La prévention du thrash est automatiquement incluse pour arrêter la nouvelle tentative si le nombre de tentatives infructueuses a dépassé un seuil défini sur une fenêtre horaire. Le seuil par défaut est de cinq tentatives infructueuses en une heure. Vous pouvez configurer ce seuil pour qu'il soit compris entre 1 et 10 tentatives. Pour plus d'informations, reportez-vous à la section [Résilience du travail](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/SECTION-jobs-resiliency.xml.html).
+ Les tâches de streaming comportent des points de contrôle pour enregistrer l'état d'exécution et la progression, afin qu'EMR Serverless puisse reprendre la tâche de streaming à partir du dernier point de contrôle. Pour plus d'informations, reportez-vous à la section [Restaurer après un échec avec le point de contrôle dans](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#recovering-from-failures-with-checkpointing) la documentation d'Apache Spark.

# Commencer à diffuser des jobs
<a name="jobs-spark-streaming-getting-started"></a>

Consultez les instructions suivantes pour savoir comment démarrer avec les jobs de streaming.

1. Suivez [Getting started with Amazon EMR Serverless pour créer une application](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html). Notez que votre application doit exécuter [Amazon EMR version 7.1.0](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-710-release.html) ou supérieure.

1. Une fois que votre application est prête, définissez le `mode` paramètre `STREAMING` sur pour soumettre une tâche de streaming, comme dans l' AWS CLI exemple suivant.

   ```
   aws emr-serverless start-job-run \
   --application-id <APPPLICATION_ID> \
   --execution-role-arn <JOB_EXECUTION_ROLE> \
   --mode 'STREAMING' \
   --job-driver '{
       "sparkSubmit": {
           "entryPoint": "s3://<streaming script>",
           "entryPointArguments": ["s3://<DOC-EXAMPLE-BUCKET-OUTPUT>/output"],
           "sparkSubmitParameters": "--conf spark.executor.cores=4
               --conf spark.executor.memory=16g 
               --conf spark.driver.cores=4
               --conf spark.driver.memory=16g 
               --conf spark.executor.instances=3"
       }
   }'
   ```

# Connecteurs de streaming pris en charge
<a name="jobs-spark-streaming-connectors"></a>

Les connecteurs de streaming facilitent la lecture des données depuis une source de streaming et peuvent également écrire des données sur un récepteur de streaming.

Les connecteurs de streaming pris en charge sont les suivants :

**Connecteur Amazon Kinesis Data Streams**

Le connecteur [Amazon Kinesis Data Streams](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-structured-streaming-kinesis.html) pour Apache Spark permet de créer des applications de streaming et des pipelines qui consomment des données depuis Amazon Kinesis Data Streams et y écrivent des données. Le connecteur prend en charge une consommation de ventilateur améliorée avec un débit de lecture dédié pouvant atteindre 2 Mo/seconde par partition. Par défaut, Amazon EMR Serverless 7.1.0 et versions ultérieures inclut le connecteur. Vous n'avez donc pas besoin de créer ou de télécharger de packages supplémentaires. Pour plus d'informations sur le connecteur, reportez-vous à la [ spark-sql-kinesis-connectorpage sur GitHub](https://github.com/awslabs/spark-sql-kinesis-connector/).

L'exemple suivant montre comment démarrer une tâche avec la dépendance du connecteur Kinesis Data Streams.

```
aws emr-serverless start-job-run \
--application-id <APPLICATION_ID> \
--execution-role-arn <JOB_EXECUTION_ROLE> \
--mode 'STREAMING' \
--job-driver '{
    "sparkSubmit": {
        "entryPoint": "s3://<Kinesis-streaming-script>",
        "entryPointArguments": ["s3://<DOC-EXAMPLE-BUCKET-OUTPUT>/output"],
        "sparkSubmitParameters": "--conf spark.executor.cores=4
                --conf spark.executor.memory=16g 
                --conf spark.driver.cores=4
                --conf spark.driver.memory=16g 
                --conf spark.executor.instances=3
                --jars /usr/share/aws/kinesis/spark-sql-kinesis/lib/spark-streaming-sql-kinesis-connector.jar"
    }
}'
```

Pour vous connecter à Kinesis Data Streams, configurez l'application EMR Serverless avec un accès VPC et utilisez un point de terminaison VPC pour autoriser l'accès privé, ou utilisez une passerelle NAT pour obtenir un accès public. Pour plus d'informations, reportez-vous à la section [Configuration de l'accès au VPC.](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/vpc-access.html) Vous devez également vous assurer que votre rôle d'exécution des tâches dispose des autorisations de lecture et d'écriture nécessaires pour accéder aux flux de données requis. Pour en savoir plus sur la configuration d'un rôle d'exécution de tâche, consultez la section [Rôles d'exécution de tâches pour Amazon EMR](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html) Serverless. Pour une liste complète de toutes les autorisations requises, consultez la [spark-sql-kinesis-connector page sur GitHub](https://github.com/awslabs/spark-sql-kinesis-connector/?tab=readme-ov-file#how-to-use-it).

**Connecteur Apache Kafka**

Le connecteur Apache Kafka pour le streaming structuré Spark est un connecteur open source créé par la communauté Spark et est disponible dans un référentiel Maven. Ce connecteur permet aux applications de streaming structuré Spark de lire et d'écrire des données depuis Apache Kafka autogéré et Amazon Managed Streaming for Apache Kafka. Pour plus d'informations sur le connecteur, reportez-vous au [guide d'intégration de Structured Streaming \$1 Kafka](https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html) dans la documentation d'Apache Spark.

L'exemple suivant montre comment inclure le connecteur Kafka dans votre demande d'exécution de tâche.

```
aws emr-serverless start-job-run \
--application-id <APPLICATION_ID> \
--execution-role-arn <JOB_EXECUTION_ROLE> \
--mode 'STREAMING' \
--job-driver '{
    "sparkSubmit": {
        "entryPoint": "s3://<Kafka-streaming-script>",
        "entryPointArguments": ["s3://<DOC-EXAMPLE-BUCKET-OUTPUT>/output"],
        "sparkSubmitParameters": "--conf spark.executor.cores=4
                --conf spark.executor.memory=16g 
                --conf spark.driver.cores=4
                --conf spark.driver.memory=16g 
                --conf spark.executor.instances=3
                --packages org.apache.spark:spark-sql-kafka-0-10_2.12:<KAFKA_CONNECTOR_VERSION>"
    }
}'
```

La version du connecteur Apache Kafka dépend de la version de votre EMR Serverless et de la version de Spark correspondante. Pour trouver la bonne version de Kafka, reportez-vous au Guide d'[intégration de Structured Streaming \$1 Kafka](https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html).

Pour utiliser Amazon Managed Streaming for Apache Kafka avec l'authentification IAM, incluez une autre dépendance pour permettre au connecteur Kafka de se connecter à Amazon MSK avec IAM. Pour plus d'informations, consultez le [aws-msk-iam-auth référentiel sur GitHub](https://github.com/aws/aws-msk-iam-auth). Vous devez également vous assurer que le rôle d'exécution des tâches dispose des autorisations IAM nécessaires. L'exemple suivant montre comment utiliser le connecteur avec l'authentification IAM.

```
aws emr-serverless start-job-run \
--application-id <APPLICATION_ID> \
--execution-role-arn <JOB_EXECUTION_ROLE> \
--mode 'STREAMING' \
--job-driver '{
    "sparkSubmit": {
        "entryPoint": "s3://<Kafka-streaming-script>",
        "entryPointArguments": ["s3://<DOC-EXAMPLE-BUCKET-OUTPUT>/output"],
        "sparkSubmitParameters": "--conf spark.executor.cores=4
                --conf spark.executor.memory=16g 
                --conf spark.driver.cores=4
                --conf spark.driver.memory=16g 
                --conf spark.executor.instances=3
                --packages org.apache.spark:spark-sql-kafka-0-10_2.12:<KAFKA_CONNECTOR_VERSION>,software.amazon.msk:aws-msk-iam-auth:<MSK_IAM_LIB_VERSION>"
    }
}'
```

Pour utiliser le connecteur Kafka et la bibliothèque d'authentification IAM d'Amazon MSK, configurez l'application EMR Serverless avec un accès VPC. Vos sous-réseaux doivent avoir accès à Internet et utiliser une passerelle NAT pour accéder aux dépendances Maven. Pour plus d'informations, reportez-vous à la section [Configuration de l'accès au VPC.](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/vpc-access.html) Les sous-réseaux doivent disposer d'une connectivité réseau pour accéder au cluster Kafka. Cela est vrai que votre cluster Kafka soit autogéré ou que vous utilisiez Amazon Managed Streaming pour Apache Kafka Kafka. 

# Gestion des journaux de tâches en streaming
<a name="jobs-spark-streaming-log-management"></a>

Les tâches de streaming prennent en charge la rotation des journaux pour les journaux des applications Spark et les journaux d'événements, ainsi que le compactage des journaux pour les journaux d'événements Spark. Cela vous permet de gérer efficacement vos ressources.

**Rotation du journal**

Les tâches de streaming prennent en charge la rotation des journaux des applications Spark et des journaux d'événements. La rotation des journaux empêche les longues tâches de streaming de générer des fichiers journaux volumineux susceptibles d'occuper tout l'espace disque disponible. La rotation des journaux vous permet d'économiser de l'espace disque et d'éviter les échecs de tâches dus à un espace disque insuffisant. Pour plus d'informations, reportez-vous à [Rotation des journaux](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/rotating-logs.html). 

**Compactage des bûches**

Les tâches de streaming prennent également en charge le compactage des journaux d'événements Spark chaque fois que la journalisation gérée est disponible. Pour plus de détails sur la journalisation gérée, reportez-vous à la section [Journalisation avec stockage géré](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/logging.html#jobs-log-storage-managed-storage). Les tâches de streaming peuvent s'exécuter pendant une longue période, et la quantité de données d'événements peut s'accumuler au fil du temps et augmenter considérablement la taille des fichiers journaux. Le serveur d'historique Spark lit et charge ces événements en mémoire pour l'interface utilisateur de l'application Spark. Ce processus peut entraîner des latences et des coûts élevés, en particulier si les journaux d'événements stockés dans Amazon S3 sont très volumineux. 

Le compactage des journaux réduit la taille du journal des événements, de sorte que le serveur d'historique Spark n'a pas besoin de charger plus de 1 Go de journaux d'événements à tout moment. Pour plus d'informations, reportez-vous à la section [Surveillance et instrumentation](https://spark.apache.org/docs/latest/monitoring.html) de la documentation d'Apache Spark.