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.
AWS Glue Streaming
AWS Glue Le streaming, un composant de AWS Glue, vous permet de gérer efficacement les données de streaming en temps quasi réel, ce qui vous permet d'effectuer des tâches cruciales telles que l'ingestion, le traitement et l'apprentissage automatique des données. Grâce au framework Apache Spark Streaming, AWS Glue Streaming fournit un service sans serveur capable de gérer les données de streaming à grande échelle. AWS Glue fournit diverses optimisations en plus d'Apache Spark, telles qu'une infrastructure sans serveur, une mise à l'échelle automatique, le développement visuel de tâches, des blocs-notes instantanés pour les tâches de streaming et d'autres améliorations de performances.
Cas d’utilisation pour le streaming
Parmi les cas d'utilisation courants du AWS Glue streaming, citons :
Near-real-time traitement des données : le AWS Glue streaming permet aux organisations de traiter les données de streaming en temps quasi réel, ce qui leur permet 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 : vous pouvez utiliser le AWS Glue streaming pour analyser en temps réel les données de streaming, ce qui en fait un outil précieux pour détecter les activités frauduleuses, telles que les fraudes par carte de crédit, les intrusions sur le réseau ou les escroqueries en ligne. En traitant et en analysant en permanence les données entrantes, vous pouvez rapidement identifier les schémas suspects ou les anomalies.
Analyse des réseaux sociaux : le AWS Glue streaming peut traiter les données des réseaux sociaux en temps réel, telles que les tweets, les publications ou les commentaires, ce qui permet aux organisations de suivre les tendances, d'analyser les sentiments et de gérer la réputation de la marque en temps réel.
Analyse de l'Internet des objets (IoT) : le AWS Glue streaming convient à la gestion et à l'analyse de flux de données à haute vitesse générés par des appareils IoT, des capteurs et des machines connectées. Il permet le suivi en temps réel, la détection des anomalies, la maintenance prédictive et d’autres cas d’utilisation de l’analytique IoT.
Analyse du flux de clics : le AWS Glue streaming peut traiter et analyser les données de flux de clics en temps réel provenant de sites Web ou d'applications mobiles. Cela permet aux entreprises de mieux comprendre le comportement des utilisateurs, de personnaliser les expériences utilisateur et d’optimiser les campagnes marketing en fonction des données du flux de clics en temps réel.
Surveillance et analyse des journaux : le AWS Glue streaming permet de traiter et d'analyser en continu et en temps réel les données des journaux provenant de serveurs, d'applications ou de périphériques réseau. Cela permet de détecter les anomalies, de résoudre les problèmes et de surveiller l’état et les performances du système.
Systèmes de recommandation : le AWS Glue streaming peut traiter les données d'activité des utilisateurs en temps réel et mettre à jour les modèles de recommandation de manière dynamique. Cela permet des recommandations personnalisées et en temps réel basées sur le comportement et les préférences des utilisateurs.
Voici quelques exemples de la diversité des cas d'utilisation dans lesquels le AWS Glue streaming peut être appliqué. Son intégration à l' AWS écosystème et aux services gérés en fait un choix pratique pour le traitement et l'analyse des flux en temps réel dans le cloud.
Quels sont les avantages de l'utilisation AWS Glue Diffusion ?
Les avantages de l'utilisation du AWS Glue streaming sont les suivants :
Sans serveur : le AWS Glue streaming se fait sans serveur, ce qui élimine le besoin de gérer l'infrastructure. Cela réduit les frais opérationnels et permet aux utilisateurs de se concentrer sur les tâches de traitement et d’analytique des données plutôt que sur la gestion de l’infrastructure.
Mise à l'échelle automatique : le AWS Glue streaming fournit des fonctionnalités de dimensionnement automatique, ajustant dynamiquement la capacité de traitement en fonction de la charge de travail. Il monte en puissance ou se met à l’échelle horizontale automatiquement pour gérer les fluctuations du volume de données, garantissant ainsi des performances et une utilisation des ressources optimales.
Développement visuel : le développement de l'emploi en streaming peut être complexe. AWS Glue Le streaming répond à ce défi en proposant AWS Glue Studio, un outil de création visuelle. AWS Glue Studio simplifie le processus de création de flux de travail de streaming et permet aux développeurs de concevoir et de gérer visuellement des applications de streaming, réduisant ainsi la courbe d'apprentissage et augmentant la productivité.
Cost-effective: En tant que service sans serveur, le AWS Glue streaming offre une rentabilité en éliminant le besoin de provisionner et de maintenir l'infrastructure. Les utilisateurs sont facturés en fonction des ressources consommées lors de l’exécution des tâches de streaming, ce qui permet une optimisation des coûts et une mise à l’échelle en fonction de l’utilisation réelle.
Gère des charges de travail complexes : le AWS Glue streaming est conçu pour gérer des charges de travail de streaming complexes. Il peut traiter et analyser de grands volumes de données en temps réel, prendre en charge des transformations avancées et s'intégrer à d'autres AWS services, permettant ainsi des pipelines de données en streaming et des flux de travail d'analyse sophistiqués.
Pas de verrouillage : le AWS Glue streaming apporte de la flexibilité et évite la dépendance vis-à-vis d'un fournisseur. Les utilisateurs peuvent tirer parti du AWS Glue streaming dans le cadre d'un AWS écosystème plus large, en l'intégrant parfaitement à d'autres AWS services. Cela permet une intégration facile avec les sources de données, les applications et les services existants sans être lié à une technologie ou à une plateforme spécifique.
Quand l’utiliser AWS Glue Diffusion ?
Il existe de nombreuses options en ce qui concerne les cas d’utilisation du streaming. Nous recommandons le AWS Glue streaming dans les scénarios suivants.
Si vous utilisez AWS Glue déjà Spark pour le traitement par lots, AWS Glue Streaming est le choix idéal pour vous. Il permet une transition fluide vers la création de tâches de streaming sans qu’il soit nécessaire d’apprendre un nouveau langage ou un nouveau cadre. En tirant parti de vos connaissances et de votre infrastructure existantes, le AWS Glue streaming simplifie le processus de développement des tâches et vous permet d'étendre facilement vos capacités de traitement des données à des scénarios de streaming en temps réel.
Si vous avez besoin d'un service ou d'un produit unifié pour gérer les charges de travail par lots, en streaming et pilotées par des événements, le AWS Glue streaming est la solution qu'il vous faut. Avec le AWS Glue streaming, vous pouvez regrouper vos besoins en matière de traitement des données dans un cadre unique, éliminant ainsi la complexité liée à la gestion de plusieurs systèmes. Cela permet le développement et la maintenance efficaces de divers flux de données tout en garantissant la cohérence et la compatibilité entre les différents types de charge de travail.
AWS Glue Le streaming convient parfaitement aux scénarios impliquant des volumes de données de streaming extrêmement importants et des transformations complexes, telles que des jointures entre des flux ou des bases de données relationnelles. Il peut traiter et analyser efficacement des flux de données massifs, ce qui vous permet de gérer facilement des charges de travail exigeantes. Qu'il s'agisse d'ingestion de données à haute vitesse ou de manipulations complexes de données, l'évolutivité et les capacités de traitement avancées de AWS Glue Streaming garantissent des performances optimales et des résultats précis.
Si vous préférez une approche visuelle pour créer des tâches de streaming, vous pouvez AWS Glue utiliser AWS Glue Studio, qui vous permet de concevoir et de gérer visuellement vos applications de streaming, simplifiant ainsi le processus de développement. Cette interface intuitive permet aux développeurs de créer, configurer et surveiller les flux de travail de streaming à l’aide d’une interface visuelle, réduisant ainsi la courbe d’apprentissage et augmentant la productivité.
AWS Glue Le streaming est un excellent choix pour les cas d'utilisation en temps quasi réel où il existe des SLA (Service Level Agreements) stricts supérieurs à 10 secondes.
Si vous créez un lac de données transactionnel à l'aide d'Apache Iceberg, Apache Hudi ou Delta Lake, AWS Glue Streaming fournit un support natif pour ces formats de table ouverte. Cette intégration fluide vous permet de traiter les données de streaming directement à partir de ces lacs de données transactionnels, garantissant ainsi la cohérence, l’intégrité et la compatibilité des données.
Lorsque vous devez ingérer des données de streaming pour diverses cibles de données : AWS Glue Streaming fournit des cibles natives à diverses cibles de données telles qu'Amazon Redshift, Amazon RDS, Amazon Aurora, Oracle, SQL Server et d'autres cibles.
Sources de données prises en charge
AWS Glue Le streaming prend en charge les sources de données suivantes :
Amazon Kinesis
Amazon MSK (Managed Streaming for Apache Kafka)
Self-managed Apache Kafka
Cibles de données prises en charge
AWS Glue Le streaming prend en charge une variété de cibles de données telles que :
Cibles de données prises en charge par AWS Glue Data Catalog
Amazon S3
Amazon Redshift
MySQL
PostgreSQL
Oracle
Microsoft SQL Server
Snowflake
Toute base de données pouvant être connectée à l’aide de JDBC
Apache Iceberg, Delta et Apache Hudi
AWS Glue Connecteurs Marketplace
Activation du mode temps réel pour les tâches de streaming
Real-time mode (RTM) est un nouveau modèle d'exécution pour Spark Structured Streaming disponible dans la AWS Glue version 6.0. Le RTM réduit la latence de bout en bout de quelques secondes ou minutes à moins d'une seconde. Real-time le mode s'applique uniquement aux jobs Spark Structured Streaming. Elle ne s'applique pas à l'ancienne version de Spark Streaming (DStreams) ni à d'autres types de tâches.
Utilisations Trigger.RealTime RTM. Les tâches s'exécutent en continu dans une fenêtre de traitement par lots (5 minutes par défaut) et traitent les enregistrements au fur et à mesure de leur arrivée, au lieu d'accumuler des données sur plusieurs intervalles. Cela diffère du modèle de micro-batch par défaut, oùforEachBatch/Trigger.ProcessingTimeinterroge, traite, valide et redémarre les tâches à chaque intervalle.
Important
RTM nécessite un opt-in explicite via un argument de job. S'il n'y a pas assez d'emplacements de tâches pour couvrir toutes les partitions sources, RTM supprime silencieusement les partitions non attribuées. Vous devez fournir suffisamment de travailleurs pour couvrir toutes vos partitions Kafka.
Conditions préalables
Avant d'activer le mode temps réel, vérifiez que votre tâche répond aux exigences suivantes :
-
AWS Glue la version 6.0
-
Job doit utiliser Spark Structured Streaming. Real-time le mode ne s'applique pas à l'ancienne version de Spark Streaming (DStreams) ou à d'autres types de tâches.
-
Le type de tâche doit être Spark Streaming (
gluestreamingcommande) -
La langue de travail doit être Scala (
--job-language scala). PySpark Le support RTM n'est pas disponible avant Spark 4.2. -
Source Kafka uniquement. Amazon Kinesis n'est pas pris en charge pour RTM dans AWS Glue la version 6.0.
-
Opérations sans état uniquement (sélection, filtre, projet, carte). Les opérations avec état telles que les agrégations, les jointures, la déduplication et les opérations fenêtrées ne sont pas prises en charge.
-
Le mode de sortie doit être Update. Le mode Ajouter n'est pas pris en charge avec RTM.
-
Auto-scaling n'est pas compatible avec le mode temps réel. N'activez pas la mise à l'échelle automatique pour les tâches RTM. Configurez un nombre fixe de travailleurs suffisant pour couvrir toutes les partitions Kafka de votre rubrique source.
Quand utiliser le mode temps réel
Real-time le mode est conçu pour une classe spécifique de charges de travail de streaming. Envisagez d'utiliser le mode temps réel lorsque :
-
Vous avez besoin d'une latence de bout en bout inférieure à une seconde et la latence des micro-lots (1 à 2 secondes ou plus) est trop élevée pour votre cas d'utilisation.
-
Votre pipeline effectue des transformations sans état telles que le filtrage, la projection, l'enrichissement ou le routage d'enregistrements de Kafka vers Kafka ou un autre récepteur.
-
Vous disposez d'un nombre fixe et prévisible de partitions Kafka et pouvez provisionner les travailleurs en conséquence.
-
Vos jobs sont écrits en Scala.
Continuez à utiliser le mode micro-batch lorsque :
-
Vous avez besoin d'opérations dynamiques telles que des agrégations, des jointures, une déduplication ou des calculs fenêtrés.
-
Vous utilisez Amazon Kinesis comme source.
-
Tu écris PySpark des jobs.
-
Vous comptez sur la mise à l'échelle automatique pour gérer des volumes de données variables.
-
Vous utilisez l'API de GlueContext streaming
forEachBatchor. -
Second-level la latence est acceptable pour votre cas d'utilisation.
Comment fonctionne le mode temps réel
Ce qui suit décrit la différence entre le modèle de micro-lots et le mode temps réel :
- Micro-batch mode
-
Chaque intervalle lance des tâches, lit les données accumulées, traite les données, valide le point de contrôle, met fin aux tâches et les répète. La latence minimale est d'environ 1 à 2 secondes.
- Real-time mode
-
Les tâches sont lancées une seule fois et s'exécutent pendant une durée de
batchDurationMs(5 minutes par défaut). Les tâches traitent les enregistrements au fur et à mesure qu'ils arrivent, avec une latence inférieure à la seconde. À la date limite, les tâches s'arrêtent de manière coopérative. Le pilote valide le point de contrôle et le lot suivant relance les tâches.
Les deux modes utilisent le même format de point de contrôle et le même mécanisme de restauration. La principale différence réside dans la durée de vie des tâches. Micro-batch le mode arrête et relance les tâches à chaque intervalle. Real-time le mode permet aux tâches de s'exécuter en continu dans une fenêtre de traitement par lots plus longue.
Important
S'il n'y a pas assez d'emplacements de tâches pour traiter toutes les partitions sources, RTM supprime silencieusement les partitions non attribuées. Assurez-vous de prévoir suffisamment de travailleurs pour couvrir toutes les cloisons.
Pour activer le mode temps réel
Vous activez le mode temps réel en définissant l'argument de la --enable-real-time-mode tâche surtrue. Vous pouvez définir cet argument dans la AWS Glue console ou via l'API.
Pour activer le mode temps réel (console)
-
Ouvrez la AWS Glue console
et ouvrez votre job de streaming. -
Sélectionnez l'onglet Job details (Détails de la tâche).
-
Pour la version Glue, choisissez Glue 6.0. Pour Type, choisissez Spark Streaming.
-
Accédez à la section Paramètres de la tâche.
-
Choisissez Ajouter un nouveau paramètre.
-
Pour Clé, entrez
--enable-real-time-mode. Pour le champ Value (Valeur), entreztrue. -
Choisissez Enregistrer.
Note
Les tirets de tête sont obligatoires. Les paramètres de la tâche correspondent à la vue console deDefaultArguments.
Pour activer le mode temps réel (API)
Le --enable-real-time-mode drapeau est enregistré sur la DefaultArguments carte de la définition du poste. Vous pouvez le définir lors de la création ou de la mise à jour d'une tâche.
Pour créer un nouvel emploi (AWS CLI)
Exécutez la commande suivante :
aws glue create-job \ --name my-rtm-job \ --role arn:aws:iam::123456789012:role/MyGlueRole \ --glue-version 6.0 \ --worker-type G.1X --number-of-workers 4 \ --command '{"Name":"gluestreaming","ScriptLocation":"s3://my-bucket/scripts/rtm-job.scala"}' \ --default-arguments '{ "--enable-real-time-mode": "true", "--job-language": "scala", "--class": "GlueApp", "--TempDir": "s3://my-bucket/tmp/" }' \ --region us-east-2
Pour créer une nouvelle tâche (boto3)
Utilisez le code suivant :
import boto3 glue = boto3.client("glue", region_name="us-east-2") glue.create_job( Name="my-rtm-job", Role="arn:aws:iam::123456789012:role/MyGlueRole", GlueVersion="6.0", WorkerType="G.1X", NumberOfWorkers=4, Command={ "Name": "gluestreaming", "ScriptLocation": "s3://my-bucket/scripts/rtm-job.scala", }, DefaultArguments={ "--enable-real-time-mode": "true", "--job-language": "scala", "--class": "GlueApp", "--TempDir": "s3://my-bucket/tmp/", }, )
Pour mettre à jour une tâche existante (AWS CLI)
Exécutez la commande suivante :
aws glue update-job \ --job-name my-existing-job \ --job-update '{ "GlueVersion": "6.0", "DefaultArguments": { "--enable-real-time-mode": "true", "--job-language": "scala" } }'
Rédaction de votre script de streaming
L'argument job déclare l'intention d'utiliser le mode temps réel. Votre script sélectionne le déclencheur.
L'exemple Scala suivant montre une requête de streaming qui utilise Trigger.RealTime :
import org.apache.spark.sql.streaming.Trigger val query = df.writeStream .format("kafka") .outputMode("update") .trigger(Trigger.RealTime(60000L)) // checkpoint interval in milliseconds .start() query.awaitTermination()
Trigger.RealTimeprend un intervalle de point de contrôle en millisecondes. Le mode de sortie de mise à jour est requis. Le mode Ajouter lanceOUTPUT_MODE_NOT_SUPPORTED.
Vous pouvez mélanger les modes dans un seul script tant que le drapeau est activé :
dfA.writeStream.outputMode("update").trigger(Trigger.RealTime(60000L)).start() dfB.writeStream.outputMode("append").trigger(Trigger.ProcessingTime("30 seconds")).start()
Comportement lorsque le drapeau est absent
Ce qui suit décrit le comportement de la tâche lorsque l'--enable-real-time-modeindicateur n'est pas défini :
-
Une tâche qui lance une requête en temps réel sans
--enable-real-time-modeindicateur échoue au démarrage de la requête. Le message d'échec vous demande d'ajouter l'argument. -
Micro-batch-only les emplois ne sont jamais affectés par l'absence de ce drapeau.
-
Une tâche qui définit l'indicateur mais utilise uniquement des requêtes par micro-lots n'est pas non plus affectée.
Considérations et restrictions
Lorsque vous utilisez le mode temps réel, tenez compte des points suivants :
- Cloison tombe
-
S'il n'y a pas suffisamment d'emplacements de tâches pour couvrir toutes les partitions sources, les partitions non attribuées ne sont pas traitées. Provisionner des travailleurs pour couvrir toutes les cloisons de Kafka.
- Pas de mise à l'échelle automatique
-
N'activez pas la mise à l'échelle automatique pour les tâches en mode temps réel. Auto-scalingn'est pas compatible avec le RTM et introduit une latence qui contrebalance les avantages de la faible latence. Fournissez un nombre fixe de travailleurs égal ou supérieur au nombre de partitions Kafka dans votre rubrique source.
- Kafka uniquement
-
La source Amazon Kinesis ne prend pas en charge le format RTM dans AWS Glue la version 6.0.
- Scala uniquement
-
PySpark n'est pas pris en charge pour RTM avant Spark 4.2.
- Apatride uniquement
-
Les agrégations, les jointures, la déduplication, les opérations fenêtrées
transformWithStatene sont pas prises en charge. - pour EachBatch incompatible
-
RTM n'utilise pas le
forEachBatchmodèle. À utiliserTrigger.RealTimedirectementwriteStreamavec. - Restauration des points de contrôle
-
Au redémarrage de la tâche, RTM reprend ses activités à partir du dernier point de contrôle. Des points de contrôle ont lieu tous les jours
batchDurationMs. Worst-case le retraitement est la durée d'une fenêtre de traitement par lots (sémantique au moins une fois).