Questions d'ordre général

Q : Qu'est-ce qu'Amazon Kinesis Data Analytics ?
Amazon Kinesis Data Analytics est l’outil le plus simple qui permet d’analyser les données en streaming, d’obtenir des informations exploitables et de répondre aux besoins de votre entreprise et de vos clients en temps réel. Amazon Kinesis Data Analytics simplifie la création, la gestion et l’intégration des applications de streaming dans d’autres services AWS. Vous pouvez créer rapidement des requêtes SQL et des applications Java sophistiquées en utilisant des modèles et des opérateurs intégrés pour des fonctions de traitement communes telles que l’organisation, la transformation, l’agrégation et l’analyse de données à toutes les échelles.
 
Amazon Kinesis Data Analytics s’occupe de toutes les opérations nécessaires pour exécuter vos applications en temps réel en continu et assure une mise à l’échelle automatique en fonction du volume et du débit de vos données entrantes. Avec Amazon Kinesis Data Analytics, vous ne payez que les ressources consommées par vos applications de streaming. Il n'y a pas de montant minimum ni de frais d'installation.
 
Q : En quoi consiste le traitement des flux en temps réel et pourquoi en ai-je besoin ?
Les données nous parviennent à la vitesse de l'éclair en raison de l'augmentation fulgurante des sources de données en temps réel. La consignation de données des applications mobiles et Web, l'achat des données de sites d’e-commerce ou encore la collecte des données des capteurs des appareils de l'Internet des objets fournissent des informations permettant aux entreprises d'en savoir plus sur l'activité actuelle de leurs clients, de leur organisation et de leur exploitation. Grâce à une visibilité immédiate sur ces données, vous pouvez surveiller vos activités en temps réel et saisir sans attendre les nouvelles opportunités commerciales. Par exemple, vous pouvez proposer des offres commerciales aux clients en fonction de leur localisation à un moment donné, ou surveiller l’humeur des réseaux sociaux et les changements d’attitude des clients pour identifier et saisir de nouvelles opportunités.
 
Pour tirer parti de ces opportunités, vous avez besoin d'un ensemble d'outils d'analyse pour collecter et analyser les données de streaming en temps réel différent de celui qui est généralement disponible pour les données statiques stockées. Avec les outils d'analyse traditionnels, vous collectez les informations, les stockez dans une base de données et les analysez quelques heures, jours ou semaines plus tard. L'analyse de données en temps réel nécessite une approche différente, ainsi que d'autres outils et services. Au lieu d'exécuter des requêtes de base de données sur des données stockées, les services d'analyse des données de streaming traitent en continu les données avant que celles-ci soient stockées. Les données de streaming circulent à une vitesse incroyable, qui peut varier constamment à la hausse et à la baisse. Les services d'analyse des données de streaming doivent donc être capables de traiter ces données à mesure qu'elles arrivent, souvent à une vitesse de plusieurs millions d'événements par heure.
 
Q : Que puis-je faire avec Kinesis Data Analytics ?
Les cas d’emploi de Kinesis Data Analytics sont nombreux, pour traiter les données en continu et obtenir des informations en quelques secondes ou minutes, sans devoir attendre plusieurs jours ou semaines. Kinesis Data Analytics vous permet de concevoir rapidement des applications de traitement des flux de bout en bout pour l'analyse des journaux et des parcours de navigation, l'Internet des objets (IoT), les technologies publicitaires, les jeux et bien plus encore. Les trois cas d’emploi les plus courants sont les processus ETL de streaming, la génération de métriques en continu et l’analyse de réactivité.
 
ETL de streaming
Les applications d’ETL de streaming vous permettent de nettoyer, d’organiser et de transformer les données brutes avant le chargement de votre lac de données ou entrepôt de donnée en temps réel. Cela réduit ou élimine les étapes d’ETL par lots. Ces applications peuvent mettre en mémoire tampon de petits enregistrements sous la forme de gros fichiers avant la livraison, et réaliser des jointures complexes dans les flux et les tables. Par exemple, vous pouvez créer une application qui lit en continu les données de capteur IoT stockées dans Amazon Kinesis Data Streams, organiser les données par type de capteur, supprimer les doublons, normaliser les données selon un schéma spécifique, puis transmettre les données à Amazon S3.
 
Génération de métriques en continu
Les applications de génération de métriques en continu vous permettent de surveiller et de comprendre les tendances de vos données sur la durée. Vos applications peuvent agréger des données de streaming sous forme d’informations critiques et les intégrer en toute transparence à des bases de données de reporting et à des services de surveillance, pour les mettre au service de vos applications et utilisateurs en temps réel. Grâce à Kinesis Data Analytics, vous pouvez utiliser un code SQL ou Java pour générer en continu des analyses des données en séries chronologiques pendant différentes fenêtres temporelles. Par exemple, vous pouvez concevoir un classement en direct pour un jeu sur appareil mobile en déterminant toutes les minutes les meilleurs joueurs et en les envoyant à Amazon DynamoDB. Vous pouvez également suivre le trafic de votre site Web en calculant toutes les cinq minutes le nombre de visiteurs uniques et en envoyant les résultats traités à Amazon Redshift.
 
Analyses de réactivité en temps réel
Les applications d’analyses de réactivité en temps réel envoient des alarmes ou des notifications en temps réel lorsque certaines métriques atteignent des seuils prédéfinis ou, dans les cas les plus avancés, lorsque votre application détecte des anomalies à l'aide des algorithmes Machine Learning. Ces applications vous permettent de réagir aux évolutions de votre activité en temps réel, par exemple en anticipant l’abandon des utilisateurs dans les applications mobiles et en identifiant les systèmes dégradés. Par exemple, une application peut déterminer la disponibilité ou le taux de réussite d'une API destinée aux clients au fil du temps, puis envoyer les résultats à Amazon CloudWatch. Vous pouvez concevoir une autre application pour rechercher des événements qui répondent à certains critères, puis avertir automatiquement les clients correspondants à l'aide d’Amazon Kinesis Data Streams et d'Amazon Simple Notification Service (SNS).
 
Q : Comment démarrer avec les applications Java pour Kinesis Data Analytics ?
Connectez-vous à la console Amazon Kinesis Data Analytics, puis créez une application de traitement des flux de données. Vous pouvez également utiliser l' interface de ligne de commande AWS et les kits SDK AWS. Une fois que vous avez créé une application, ouvrez votre IDE (environnement de développement intégré) favori, connectez-vous à AWS et installez les bibliothèques Java open source. Les bibliothèques open source sont basées sur Apache Flink, un framework open source doublé d’un moteur conçu pour le traitement de flux de données, et les SDK AWS. Les bibliothèques extensibles comptent plus de 25 opérateurs de traitement de flux préconstruits, tels que fenêtre et agrégation, et des intégrations de services AWS comme Amazon Kinesis Data Streams et Amazon Kinesis Data Firehose. Une fois votre code créé, vous le téléchargez sur Amazon Kinesis Data Analytics et le service s’occupe de toutes les opérations nécessaires pour exécuter vos applications en temps réel en continu, y compris la mise à l’échelle automatique en fonction du volume et du débit de vos données entrantes.
 
Q : Comment démarrer avec les applications SQL pour Kinesis Data Analytics ?
Connectez-vous à la console Amazon Kinesis Data Analytics, puis créez une application de traitement des flux de données. Vous pouvez également utiliser l' interface de ligne de commande AWS et les kits SDK AWS. Vous pouvez concevoir une application de bout en bout en suivant trois étapes simples : 1) configurer les données de streaming entrantes, 2) rédiger les requêtes SQL et 3) pointer l'emplacement où vous souhaitez que les résultats soient chargés. Kinesis Data Analytics reconnaît les formats de données standard tels que JSON, CSV et TSV et crée automatiquement un schéma de base. Vous pouvez ajuster ce schéma ou, si vos données ne sont pas structurées, en définir un nouveau à l'aide de notre éditeur de schémas intuitif. Le service applique ensuite le schéma au flux de données entrantes et le fait ressembler à une table SQL constamment mise à jour. Vous pouvez donc rédiger des requêtes SQL standard dedans. Vous pouvez utiliser notre éditeur SQL pour concevoir vos requêtes.
 
L'éditeur SQL intègre toutes les options requises, dont la vérification et le test de la syntaxe sur des données en direct. Nous vous offrons également des modèles qui fournissent le code SQL correspondant à un simple filtre de flux à la détection avancée d'anomalies et à des analyses top-K. Kinesis Data Analytics s'occupe de mettre en service et de mettre à l'échelle de manière extensible l'ensemble de l'infrastructure afin de gérer n'importe quel débit de données. Vous n'avez donc pas besoin de planifier, de mettre en service ou de gérer l'infrastructure.
 
Q : Quelles sont les limites de Kinesis Data Analytics ?
Kinesis Data Analytics met à l'échelle votre application de manière extensible pour s'adapter au débit de données de votre flux source et à la complexité de vos requêtes dans la plupart des scénarios. Pour des informations détaillées à propos des limites de service, consultez la section relative aux limites dans le guide du développeur Amazon Kinesis Data Analytics for SQL. Pour des informations détaillées à propos des limites de service pour les applications Java, consultez la section relative aux limites dans le guide du développeur Amazon Kinesis Data Analytics for Java.

Concepts clés

Q : Qu'est-ce qu'une application Kinesis Data Analytics ?
Une application représente l'entité Kinesis Data Analytics avec laquelle vous travaillez. Les applications Kinesis Data Analytics lisent et traitent continuellement des données de streaming en temps réel. Le code d'application est rédigé à l'aide de SQL ou Java pour traiter les données de streaming entrantes et générer les données sortantes. Kinesis Data Analytics écrit ensuite les données sortantes sur une destination configurée.
 
Chaque application comprend trois composants principaux :
 
Données entrantes : source de données de streaming de votre application. Dans la configuration des données entrantes, vous mappez la source de données de streaming sur des flux de données entrantes intégrés à l'application. Les données passent de vos sources de données aux flux de données intégrés à l’application. Les données de ces flux intégrés sont traitées à l’aide du code de votre application, en envoyant les données traitées vers les destinations et flux de données intégrés suivants. Vous ajoutez les données entrantes dans le code des applications Java ou via l’API des applications SQL.
 
Code d'application : suite d'instructions SQL ou d’opérateurs Java qui traitent les données entrantes et génèrent les données sortantes. Dans sa forme la plus simple, le code d’application peut être un opérateur Java ou une instruction SQL unique qui lit les données d’un flux intégré à l’application associé à une source de streaming, puis écrit dans le flux de données intégré associé à une sortie. Vous pouvez écrire du code Java ou SQL qui fractionne le flux de données intégré initial en plusieurs flux et leur applique une logique supplémentaire.
 
Données sortantes : vous pouvez créer un ou plusieurs flux intégrés à l'application afin d’y stocker les résultats intermédiaires. Le cas échéant, vous pouvez ensuite configurer les données sortantes de l'application, de sorte que les données des flux spécifiques intégrés à l'application soient conservées dans une destination externe. Vous ajoutez ces données sortantes dans le code des applications Java ou l’API des applications SQL.
 
Q : Qu'est-ce qu'un flux de données intégré à l'application ?
Un flux de données intégré à l'application représente une entité qui stocke en continu les données dans votre application afin que vous puissiez les traiter. Vos applications effectuent en continu des opérations de lecture et d’écriture dans les flux de données intégrés. Pour les applications Java, vous pouvez interagir avec un flux intégré en traitant les données via les opérateurs de flux. Les opérateurs transforment un ou plusieurs flux de données en un nouveau flux de données. Pour les applications SQL, vous interagissez avec un flux intégré comme vous le feriez avec une table SQL, à l’aide d’instructions SQL. Vous appliquez des instructions SQL à un ou plusieurs flux de données et insérez les résultats dans un nouveau flux de données.
 
Q : Quel type de code d'application est pris en charge ?
Pour les applications Java, Kinesis Data Analytics prend en charge les applications Java créées à l’aide d’ Apache Flink et des SDK AWS. Pour les applications SQL, Kinesis Data Analytics prend en charge le langage SQL ANSI avec certaines extensions du langage SQL standard pour faciliter votre travail avec les données de streaming.

Gestion des applications

Q : Comment puis-je surveiller l'activité et les performances de mes applications Kinesis Data Analytics ?
AWS vous fournit divers outils que vous pouvez utiliser pour surveiller vos applications Kinesis Data Analytics. Vous pouvez configurer certains de ces outils afin qu'ils surveillent vos applications pour vous. Pour plus d’informations sur la surveillance de vos applications, consultez :
 
Q : Comment puis-je gérer et contrôler les accès à mes applications Kinesis Data Analytics ?
Kinesis Data Analytics a besoin d'autorisations pour lire les enregistrements provenant des sources de données de streaming que vous indiquez dans votre application. Kinesis Data Analytics a également besoin d'autorisations pour écrire les données sortantes de votre application sur des destinations que vous spécifiez dans la configuration des données sortantes de votre application. Vous pouvez accorder ces autorisations en créant des rôles IAM que Kinesis Data Analytics peut endosser. Les autorisations accordées à ce rôle déterminent les tâches que le service Kinesis Data Analytics peut effectuer lorsqu'il endosse le rôle. Pour plus d'informations, consultez :
  • Granting Permissions (Octroi d’autorisations) dans le guide du développeur Amazon Kinesis Data Analytics for Java.
  • Granting Permissions (Octroi d’autorisations) dans le guide du développeur Amazon Kinesis Data Analytics for SQL.
 
Q : Comment le service Kinesis Data Analytics met-il à l'échelle mon application ?
Kinesis Data Analytics dimensionne votre application de manière extensible pour s'adapter au débit de données de votre flux source et à la complexité de vos requêtes dans la plupart des scénarios. Kinesis Data Analytics alloue des capacités sous la forme d'unités de traitement Amazon Kinesis (KPU). Une unité KPU vous fournit 1 vCPU et 4 Go de mémoire.
 
Pour les applications Java, Kinesis Data Analytics affecte 50 Go de stockage d’application active par KPU, que votre application utilise pour les points de contrôle et dont vous pouvez vous servir comme disque temporaire. Un point de contrôle est une sauvegarde à jour d’une application en cours d’exécution qui permet de reprendre immédiatement les opérations après une interruption. Vous pouvez également contrôler l’exécution parallèle de vos tâches d’application Kinesis Data Analytics for Java (par exemple, la lecture à partir d’une source ou l’exécution d’un opérateur) à l’aide des paramètres Parallelism et ParallelismPerKPU dans l’API. Parallelism définit le nombre d’instances simultanées dans une tâche. L’ensemble des opérateurs, sources et puits sont exécutés avec un parallélisme défini (par défaut, 1). Parallelism per KPU (Parallelism par KPU) définit le nombre de tâches parallèles qui peuvent être programmées par KPU dans votre application (par défaut 1). Pour plus d’informations, consultez la section relative à la mise à l’échelle dans le guide du développeur Amazon Kinesis Data Analytics for Java.
 
Pour les applications SQL, chaque source de données de streaming est mappée au flux intégré à l'application correspondant. Bien que cela ne soit pas nécessaire pour la majorité des clients, vous pouvez utiliser les unités de traitement Kinesis de manière plus efficace en augmentant le nombre de flux intégrés à l'application auxquels votre source est mappée et en définissant le paramètre de parallélisme des données entrantes. Kinesis Data Analytics attribue de façon égale les partitions de la source de données de streaming, telles que les partitions de flux de données Amazon Kinesis, au nombre de flux intégrés à l'application que vous avez indiqués. Par exemple, si vous disposez d'un flux de données Amazon Kinesis de 10 partitions en tant que source de données de streaming et que vous spécifiez un parallélisme des données entrantes de deux, Kinesis Data Analytics attribue alors cinq partitions aux deux flux intégrés à l'application intitulés « SOURCE_SQL_STREAM_001 » et « SOURCE_SQL_STREAM_002 ». Pour en savoir plus, consultez la section relative à la configuration de l'entrée d'application dans le guide du développeur Amazon Kinesis Data Analytics for SQL.
 
Q : Quelles sont les bonnes pratiques inhérentes à la conception et à la gestion de mes applications Kinesis Data Analytics ?
Pour obtenir des informations sur les bonnes pratiques pour SQL, consultez la section relative aux bonnes pratiques dans le guide du développeur Amazon Kinesis Data Analytics for SQL, qui aborde la gestion des applications, la définition du schéma de données entrantes, la connexion aux données sortantes et la création du code d'application.

Tarification et facturation

Q : Combien coûte Kinesis Data Analytics ?
Avec Amazon Kinesis Data Analytics, vous ne payez qu'en fonction de votre consommation. Aucune ressource à allouer ou aucun coût initial ne s’applique à Amazon Kinesis Data Analytics.
 
Vous êtes facturé à l'heure en fonction du nombre d'unités de traitement Amazon Kinesis (ou KPU) utilisées pour exécuter votre application de streaming. Une unité KPU est une unité de capacité de traitement des flux comprenant 1 vCPU de calcul et 4 Go de mémoire. Amazon Kinesis Data Analytics adapte automatiquement le nombre de KPU requises par votre application de traitement des flux, car les besoins en mémoire et en calcul varient en réponse à la complexité de traitement et au débit des données de streaming traitées.
 
Pour les applications Java, vous êtes facturé à hauteur d’une seule KPU supplémentaire par application utilisée pour l’orchestration d’applications. Les applications Java facturent également le stockage des applications actives et les sauvegardes d’application à long terme. Le stockage des applications actives est utilisé pour les capacités de traitement dynamique dans Amazon Kinesis Data Analytics et est facturé en Go par mois. Les sauvegardes d’application à long terme sont facultatives, facturées en Go par mois et fournissent un point de restauration à un instant dans le passé pour les applications.
 
Pour en savoir plus sur la tarification, consultez la page relative à la tarification d’Amazon Kinesis Data Analytics.
 
Q : Le service Kinesis Data Analytics est-il disponible dans le cadre de l'offre gratuite d'AWS ?
Non. Kinesis Data Analytics n'est actuellement pas disponible dans le cadre de l'offre gratuite d'AWS. L'offre gratuite d'AWS est un programme qui permet d'essayer gratuitement un certain nombre de services AWS.
 
Q : Suis-je facturé pour une application Kinesis Data Analytics qui est en cours d'exécution, mais qui ne traite aucune donnée provenant de la source ?
Pour les applications SQL, des frais minimaux équivalents à une unité de traitement Kinesis (KPU) vous sont facturés si votre application Kinesis Data Analytics est en cours d'exécution. Pour les applications Java, vous payez un minimum de deux unités de traitement Kinesis (KPU) et 50 Go de stockage d’application active si votre application Kinesis Data Analytics est en cours d'exécution.
 
Q : En dehors des frais directement liés à Kinesis Data Analytics, quels autres coûts peuvent découler de l'utilisation de ce service ?
Le service Kinesis Data Analytics est une solution de traitement des flux entièrement gérée, indépendante de la source de données de streaming depuis laquelle elle lit les données et des destinations sur lesquelles elle écrit les données traitées. Vous êtes facturé indépendamment pour les services qui lisent des données dans votre application et ceux qui y écrivent des données.

Création d'applications Java

Création du code des applications Java

Q : Qu'est-ce qu'Apache Flink ?
Apache Flink est une infrastructure open source et un moteur de traitement de données de flux et par lots. Il simplifie la création des applications de streaming, car il fournit de puissants opérateurs et résout les principaux problèmes, comme le traitement des doublons. Apache Flink offre des fonctions de distribution de données, de communication et de tolérance aux pannes pour les calculs distribués sur les flux de données.
 
Q : Comment développer des applications ?
Vous pouvez commencer par télécharger les bibliothèques open source qui contiennent le SDK AWS, Apache Flink et les connecteurs pour les services AWS. Vous trouverez des instructions concernant le téléchargement des bibliothèques et la création de votre première application dans le guide du développeur Amazon Kinesis Data Analytics for Java.
 
Q : A quoi ressemble mon code d'application ?
Vous écrivez votre code Java à l’aide de flux de données et d’opérateurs de flux. Les flux de données d’application constituent la structure de données utilisée pour le traitement avec votre code Java. Les données circulent en continu dans les flux de données d’application depuis les sources. Un ou plusieurs opérateurs de flux sont utilisés pour définir votre traitement dans les flux de données d’application, y compris la transformation, la partition, l’agrégation, la jointure et la fenêtre. Les flux de données et les opérateurs peuvent être combinés en série et en chaînes parallèles. Vous trouverez ci-dessous un court exemple de code fictif.
DataStream <GameEvent> rawEvents = env.addSource(
	New KinesisStreamSource(“input_events”));
DataStream <UserPerLevel> gameStream =
	rawEvents.map(event - > new UserPerLevel(event.gameMetadata.gameId, 
			event.gameMetadata.levelId,event.userId));
gameStream.keyBy(event -> event.gameId)
            .keyBy(1)
            .window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
            .apply(...) - > {...};
gameStream.addSink(new KinesisStreamSink("myGameStateStream"));
Q : Comment utiliser les opérateurs ?
Les opérateurs prennent un flux de données d’application comme données entrantes et envoient les données traitées vers un flux de données d’application en tant que données sortantes. Vous pouvez combiner des opérateurs pour créer des applications à plusieurs étapes. Leur implémentation et leur fonctionnement ne requièrent pas de connaissances avancées sur les systèmes distribués.
 
Q : Quels sont les opérateurs pris en charge ?
Kinesis Data Analytics for Java inclut plus de 25 opérateurs d’Apache Flink que vous pouvez utiliser dans de nombreuses situations, y compris pour Map, KeyBy, les agrégations, Window Join et Window. Map vous permet d’effectuer un traitement arbitraire, en prenant un élément dans un flux de données entrant et en produisant un autre élément. KeyBy organise les données de façon logique à l’aide d’une clé spécifiée, ce qui vous permet de regrouper le traitement des points de données similaires. Les agrégations exécutent le traitement dans plusieurs clés (somme, minimum et maximum). Window Join joint deux flux de données sur une clé et une fenêtre spécifiées. Window effectue un regroupement par date à l’aide d’une clé et d’une opération généralement basée sur le temps, comme le décompte des éléments uniques sur une période de 5 minutes.
 
Vous pouvez créer des opérateurs personnalisés si ceux fournis ne répondent pas à vos besoins. Vous trouverez d’autres exemples dans la section relative aux opérateurs dans le guide du développeur Amazon Kinesis Data Analytics for Java. Vous trouverez la liste complète des opérateurs Apache Flink dans la section relative aux opérateurs de la documentation Apache Flink.
 
Q : Quelles sont les intégrations prises en charge dans une application Java Kinesis Data Analytics ?
Vous pouvez configurer des intégrations avec un minimum de code. Les bibliothèques open source basées sur Apache Flink prennent en charge des sources de streaming et des destinations (puits) pour la livraison des données traitées. Cela comprend également la prise en charge de l’enrichissement des données via des connecteurs d’entrée/de sortie asynchrones. Vous trouverez ci-dessous la liste des connecteurs propres à AWS qui sont inclus dans les bibliothèques open source.
  • Sources de données de streaming : Amazon Kinesis Data Streams
  • Destinations (puits) : Amazon Kinesis Data Streams, Amazon Kinesis Data Firehose, Amazon DynamoDB et Amazon S3 (via les intégrations de puits de fichiers).
 
Apache Flink inclut également d’autres connecteurs, notamment Apache Kafka, Apache Cassandra, Elasticsearch, etc.
 
Q : Les intégrations personnalisées sont-elles prises en charge ?
Vous pouvez ajouter une source ou une destination à votre application en vous appuyant sur un ensemble de primitives qui vous permettent de réaliser des opérations de lecture et d’écriture à partir de fichiers, répertoires, interfaces de connexion ou tout autre élément accessible sur Internet. Apache Flink fournit ces primitives pour les sources de données et les puits de données. Les primitives incluent des configurations, comme la capacité de lire et écrire des données de manière continue ou ponctuelle, asynchrone ou synchrone, et bien plus encore. Par exemple, vous pouvez configurer une application pour lire en continu les données d’Amazon S3 en étendant l’intégration source existante basée sur fichier.
 
Q : Quel modèle de livraison fournit le service Kinesis Data Analytics pour les applications Java ?
Les applications Java dans Kinesis Data Analytics utilisent un modèle de livraison « d’unicité » si une application est créée à l’aide d’opérateurs idempotents, y compris des sources et des puits. Cela signifie que les données traitées influeront sur les résultats en aval une seule fois. Les points de contrôle enregistrent l’état actuel de l’application et permettent à Kinesis Data Analytics for Java d’effectuer une récupération pour fournir la même sémantique qu’une exécution sans panne. Les points de contrôle pour les applications Java sont fournis via la fonctionnalité de points de contrôle d’Apache Flink. Par défaut, Kinesis Data Analytics for Java utilise la sémantique d’unicité d’Apache Flink. Votre application prendra en charge exactement une sémantique de traitement si vous concevez vos applications à l’aide de sources, d’opérateurs et de puits qui ont recours à la sémantique d’unicité d’Apache Flink.
 
Q : Ai-je accès au stockage local depuis le stockage de mon application ?
Oui. Kinesis Data Analytics for Java offre à votre application 50 Go de stockage d’application active par unité de traitement Kinesis (KPU). Kinesis Data Analytics aligne le stockage sur votre application. Le stockage d’application active sert à enregistrer l’état de l’application à l’aide de points de contrôle. Votre code d’application peut également y accéder et l’utiliser comme disque temporaire pour la mise en cache de données ou à toute autre fin. Kinesis Data Analytics peut supprimer des données du stockage d’application active qui n’ont pas été enregistrées via des points de contrôle (par exemple, des opérateurs, des sources, des puits) à tout moment. Toutes les données placées dans le stockage d’application active sont cryptées au repos.
 
Q : Comment le service Kinesis Data Analytics for Java sauvegarde-t-il automatiquement mon application ?
Kinesis Data Analytics sauvegarde automatiquement l’état de votre application active à l’aide de points de contrôle et de clichés. Les points de contrôle enregistrent l’état actuel de l’application et permettent à Kinesis Data Analytics for Java d’effectuer une récupération pour fournir la même sémantique qu’une exécution sans panne. Les points de contrôle utilisent le stockage d’application active. Les clichés utilisent un point de récupération à un instant précis pour les applications. Les clichés utilisent les sauvegardes d’application à long terme.
 
Q : Que sont les clichés d’application ?
Les clichés permettent de créer votre application et de la restaurer à un instant précis. Vous pouvez donc conserver une version de l’application dans son état précédent et revenir en arrière (rollback) à tout moment. Vous contrôlez le nombre de clichés disponibles (0-1000). Les clichés utilisent les sauvegardes d’application à long terme, et Kinesis Data Analytics facture en fonction de leur taille. Par défaut, Kinesis Data Analytics chiffre les données des clichés. Vous pouvez supprimer des clichés individuels via l’API, ou tous les clichés en supprimant l’application.
 
Q : Quelles sont les versions d'Apache Flink prises en charge ?
Amazon Kinesis Data Analytics for Java prend en charge Apache Flink 1.6 et Java 8.

Création d'applications SQL

Configuration des données entrantes pour les applications SQL

Q : Quels sont les types de données entrantes pris en charge dans une application SQL Kinesis Data Analytics ?
Les applications SQL dans Kinesis Data Analytics prennent en charge deux types de données entrantes : les sources de données de streaming et les sources de données de référence. Une source de données de streaming présente des données générées en continu qui sont lues dans votre application afin d'être traitées. Une source de données de référence présente des données statiques que votre application utilise pour enrichir les données provenant des sources de données de streaming. Chaque application ne peut disposer que d'une seule source de données de streaming et que d'une seule source de données de référence. Une application lit et traite en continu de nouvelles données provenant de sources de données de streaming, telles qu'Amazon Kinesis Data Streams ou Amazon Kinesis Data Firehose. Une application lit une source de données de référence, dont Amazon S3, dans son intégralité afin de l'utiliser pour enrichir la source de données de streaming à l'aide des jointures SQL.
 
Q : En quoi consiste une source de données de référence ?
Une source de données de référence présente des données statiques que votre application utilise pour enrichir les données provenant des sources de données de streaming. Les données de référence sont stockées en tant qu'objet dans votre compartiment S3. Lorsque l'application SQL démarre, Kinesis Data Analytics lit l'objet S3 et crée une table SQL au sein de l'application pour stocker les données de référence. Votre code d'application peut ensuite les associer à un flux intégré à l'application. Vous pouvez mettre à jour les données figurant dans la table SQL en appelant l' API UpdateApplication.
 
Q : Comment configurer une source de données de streaming dans mon application SQL ?
Une source de données de streaming peut être un flux de données Amazon Kinesis ou un flux de diffusion Amazon Kinesis Data Firehose. Votre application SQL Kinesis Data Analytics lit en continu de nouvelles données provenant de sources de données de streaming à mesure qu'elles arrivent en temps réel. Les données sont mises à disposition dans votre code SQL via un flux intégré à l'application. Un flux intégré à l'application fonctionne comme une table SQL puisque vous pouvez en créer une, l'insérer et effectuer une sélection dans celle-ci. Cependant, la différence réside dans le fait qu'un flux intégré à l'application est continuellement mis à jour avec de nouvelles données provenant de la source de données de streaming.
 
Vous pouvez utiliser AWS Management Console pour ajouter une source de données de streaming. Pour en savoir plus sur les sources de données, consultez la section relative à la configuration de l'entrée de l'application dans le guide du développeur Kinesis Data Analytics for SQL.
 
Q : Comment configurer une source de données de référence dans mon application SQL ?
Une source de données de référence peut être un objet Amazon S3. Votre application SQL Kinesis Data Analytics lit l'objet S3 dans son intégralité lorsqu'elle démarre. Les données sont mises à disposition dans votre code SQL via une table. La plupart du temps, une source de données de référence est utilisée pour enrichir les données provenant d'une source de données de streaming à l'aide d'une jointure SQL.
 
Avec l'interface de ligne de commande AWS, vous pouvez ajouter une source de données de référence en indiquant le compartiment et l'objet S3, le rôle IAM et le schéma associé. Kinesis Data Analytics charge ces données lorsque vous lancez l'application, puis les charge à nouveau chaque fois que vous appelez l'API de mise à jour.
 
Q : Quels sont les formats de données pris en charge pour les applications SQL ?
Les applications SQL dans Kinesis Data Analytics peuvent détecter le schéma et analyser automatiquement les enregistrements JSON et CVS encodés au format UTF-8 à l'aide de l' API DiscoverInputSchema. Ce schéma s'applique aux données lues à partir du flux dans le cadre de leur insertion dans un flux intégré à l'application.
 
Pour les autres données encodées au format UTF-8 qui n'utilisent pas de séparateur ou qui utilisent un séparateur autre que CSV, ou dans les situations où l'API de découverte n'a pas découvert l'intégralité du schéma, vous pouvez définir un schéma à l'aide de l'éditeur de schémas interactif ou vous servir des fonctions de manipulation des chaînes pour structurer vos données. Pour plus d’informations, consultez la section relative à l' utilisation de la fonction de découverte de schéma et édition associée dans le guide du développeur Amazon Kinesis Data Analytics for SQL.
 
Q : Comment mon flux de données entrantes est-il exposé à mon code SQL ?
Kinesis Data Analytics for SQL applique le schéma que vous avez indiqué et insère vos données dans un ou plusieurs flux intégrés à l'application pour les sources de données de streaming et dans une seule table SQL pour les sources de données de référence. Le nombre par défaut de flux intégrés à l'application doit satisfaire aux besoins de la plupart de vos cas d'utilisation. Vous devez augmenter ce nombre si vous estimez que votre application n'est pas en phase avec les données les plus récentes de votre flux source, tel que cela est défini par la métrique CloudWatch MillisBehindLatest. Le nombre requis de flux intégrés à l'application est affecté par le débit de votre flux source et la complexité de vos requêtes. Le paramètre vous permettant de spécifier le nombre de flux intégrés à l'application qui sont mappés avec votre flux source est connu sous le nom de parallélisme des données entrantes.

Création du code des applications SQL

Q : A quoi ressemble mon code d'application SQL ?
Un code d'application est une série d'instructions SQL qui traitent les données entrantes et génèrent les données sortantes. Ces instructions SQL fonctionnent sur les flux intégrés à l'application et sur les tables de référence. Un flux au sein d'une application est similaire à une table continuellement mise à jour sur laquelle vous pouvez effectuer des opérations SQL SELECT et INSERT. Les sources et destinations que vous avez configurées sont exposées à votre code SQL par le biais des flux intégrés à l'application. Vous pouvez également créer des flux intégrés à l'application supplémentaires pour stocker les résultats de requête intermédiaires.
 
Servez-vous du modèle suivant pour travailler avec des flux intégrés à l'application :
  • Utilisez toujours une instruction SELECT dans le cadre d'une instruction INSERT. Lorsque vous sélectionnez des lignes, vous insérez les résultats dans un autre flux intégré à l'application.
  • Utilisez une instruction INSERT dans le cadre d'une pompe. Vous employez une pompe pour donner un caractère continu à une instruction INSERT et écrivez sur un flux intégré à l'application.
  • Vous utilisez une pompe pour relier les flux intégrés à l'application entre eux en effectuant une sélection dans un flux au sein d'une application et en l'insérant dans un autre flux intégré à l'application.
 
Le code SQL suivant vous permet de disposer d'une application simple et efficace :
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    ticker_symbol VARCHAR(4),
    change DOUBLE,
    price DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
  INSERT INTO "DESTINATION_SQL_STREAM"    
    SELECT STREAM ticker_symbol, change, price    
    FROM "SOURCE_SQL_STREAM_001";
Pour en savoir plus sur le code d'application, consultez la section relative au code de l'application dans le guide du développeur Amazon Kinesis Data Analytics for SQL.
 
Q : Comment Kinesis Data Analytics peut-il m'aider à écrire du code SQL ?
Kinesis Data Analytics comporte une bibliothèque de modèles d'analyse pour les cas d'utilisation courants, dont les filtres de données de streaming, les fenêtres bascules et la détection d'anomalies. Vous pouvez accéder à ces modèles depuis l'éditeur SQL, dans AWS Management Console. Une fois que vous avez créé une application et accédé à l'éditeur SQL, les modèles se trouvent dans le coin supérieur gauche de la console.
 
Q : Comment puis-je exécuter des opérations de détection d'anomalies en temps réel dans Kinesis Data Analytics ?
Kinesis Data Analytics inclut des fonctions SQL préconçues pour différentes analyses avancées, y compris pour la détection des anomalies. Vous pouvez appeler simplement cette fonction depuis votre code SQL pour détecter les anomalies en temps réel. Kinesis Data Analytics utilise l'algorithme de forêts aléatoires pour implémenter une fonction de détection d'anomalies. Pour plus d'informations sur les forêts aléatoires, consultez le livre blanc Streaming Data Anomaly Detection.

Configuration des destinations dans les applications SQL

Q : Quelles sont les destinations prises en charge ?
Kinesis Data Analytics for SQL prend en charge jusqu'à quatre destinations par application. Vous pouvez conserver les résultats SQL dans Amazon S3, Amazon Redshift, Amazon Elasticsearch Service (par le biais d'Amazon Kinesis Data Firehose) et Amazon Kinesis Data Streams. Vous pouvez écrire sur une destination qui n'est pas directement prise en charge par Kinesis Data Analytics en envoyant les résultats SQL à Amazon Kinesis Data Streams et en tirant parti de son intégration à AWS Lambda pour les envoyer vers la destination de votre choix.
 
Q : Comment puis-je configurer une destination ?
Dans votre code d'application, vous écrivez les données sortantes des instructions SQL sur un ou plusieurs flux intégrés à l'application. Vous pouvez également ajouter une configuration des données sortantes à votre application, de sorte que tous les éléments écrits sur des flux spécifiques intégrés à l'application soient conservés dans quatre destinations externes au maximum. Ces destinations externes peuvent être un compartiment Amazon S3, une table Amazon Redshift, un domaine Amazon Elasticsearch Service (par le biais d'Amazon Kinesis Data Firehose) et un flux de données Amazon Kinesis. Chaque application prend en charge jusqu'à quatre destinations, qui peuvent être une combinaison des éléments mentionnés ci-dessus. Pour en savoir plus, consultez la section relative à la configuration des flux de sortie dans le guide du développeur Amazon Kinesis Data Analytics for SQL.
 
Q : La destination de mon choix n'est pas directement prise en charge. Comment puis-je envoyer des résultats SQL vers cette destination ?
Vous pouvez utiliser AWS Lambda pour écrire sur une destination qui n'est pas directement prise en charge. Nous vous recommandons d'écrire les résultats sur un flux de données Amazon Kinesis, puis d'utiliser AWS Lambda pour lire les résultats traités et les envoyer vers la destination de votre choix. Pour en savoir plus, consultez la section contenant un exemple d'intégration d'AWS  Lambda dans le guide du développeur Amazon Kinesis Data Analytics for SQL. Vous pouvez également utiliser un flux de diffusion Kinesis Data Firehose pour charger les données dans Amazon S3, puis déclencher une fonction AWS Lambda pour lire les données et les envoyer vers la destination de votre choix. Pour obtenir des informations supplémentaires à ce sujet, consultez la section relative à l' utilisation d'AWS Lambda avec Amazon S3 dans le guide du développeur AWS Lambda.
 
Q : Quel modèle de livraison fournit le service Kinesis Data Analytics ?
Les applications SQL dans Kinesis Data Analytics utilisent un modèle de livraison « au moins à une reprise » pour transmettre les données sortantes de l'application aux destinations configurées. Les applications Kinesis Data Analytics vérifient les points de contrôle internes, qui sont des moments où les enregistrements des données sortantes ont été livrées vers les destinations et où aucune perte de données n'a été subie. Le service utilise les points de contrôle au besoin pour garantir que les données sortantes de votre application sont transmises au moins à une reprise aux destinations configurées. Pour en savoir plus sur le modèle de livraison, consultez la section relative à la configuration de la sortie d'application dans le guide du développeur Amazon Kinesis Data Analytics for SQL.

Comparaison avec les autres solutions de traitement des flux de données

Q : Quelles différences existe-t-il entre Amazon Kinesis Data Analytics et l'exécution de mon application à l'aide de la bibliothèque client Amazon Kinesis ?
La bibliothèque client Amazon Kinesis (KCL) est une bibliothèque pré-intégrée qui vous permet de concevoir des applications destinées aux clients pour la lecture et le traitement des données d'un flux de données Amazon Kinesis. La bibliothèque KCL gère des problèmes complexes, tels que l'adaptation à des flux de données aux volumes fluctuants, l'équilibrage de la charge pour les données de streaming, la coordination des services distribués et le traitement des données avec tolérance aux pannes. Elle vous permet ainsi de vous concentrer sur la logique métier lors de la conception des applications.
 
Avec Kinesis Data Analytics, vous pouvez traiter et interroger des données de streaming en temps réel. Vous utilisez le langage SQL standard pour traiter vos flux de données. Ainsi, vous n'avez pas besoin d'apprendre de nouveaux langages de programmation. Il vous suffit de faire en sorte que Kinesis Data Analytics pointe vers un flux de données entrant, de rédiger vos requêtes SQL, puis d'indiquer l'emplacement où vous souhaitez que les résultats soient chargés. Kinesis Data Analytics utilise la bibliothèque KCL pour lire les données provenant des sources de données de streaming dans le cadre de votre application sous-jacente. Le service vous épargne ces détails, ainsi que la plupart des concepts complexes associés à l'utilisation de la bibliothèque KCL, tels que l'enregistrement des points de contrôle.
 
Si vous souhaitez bénéficier d'une solution entièrement gérée et vous servir de SQL pour traiter les données de votre flux, nous vous conseillons d'utiliser Kinesis Data Analytics. Utilisez la bibliothèque KCL si vous devez concevoir une solution de traitement personnalisée dont les exigences ne sont pas satisfaites par Kinesis Data Analytics et si vous êtes en mesure de gérer l'application client en découlant.

Démarrez avec Amazon Kinesis Data Analytics

Product-Page_Standard-Icons_01_Product-Features_SqInk
Calculez vos coûts

Consultez la page de tarification

En savoir plus 
Product-Page_Standard-Icons_01_Product-Features_SqInk
Consultez le guide de démarrage

Découvrez comment utiliser Amazon Kinesis Data Analytics dans ce guide pas à pas.

Product-Page_Standard-Icons_03_Start-Building_SqInk
Création d'applications de streaming sur AWS

Créez votre première application de streaming à partir de la console Amazon Kinesis Data Analytics.