Remarque :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification Oracle Cloud Infrastructure, la location et les compartiments. A la fin de votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Flux de messages AVRO à l'aide d'Oracle Cloud Infrastructure Streaming et d'OCI Data Flow grâce au traitement par micro-batch
Introduction
Dans le paysage actuel axé sur les données, la capacité de traiter et d'analyser des flux de données en temps réel est cruciale pour les entreprises qui cherchent à obtenir des informations et à réagir rapidement à l'évolution des conditions. Les technologies de traitement des données de diffusion en continu sont devenues des solutions puissantes pour la gestion de flux de données continus volumineux. Dans ce tutoriel, nous allons étudier une approche novatrice pour diffuser efficacement les messages AVRO à l'aide d'Oracle Cloud Infrastructure (OCI) Streaming, associée à la technique de traitement par micro-batch, et améliorée avec les fonctionnalités sans serveur d'Oracle Functions basées sur le projet FN open source.
Introduction à AVRO et à la diffusion en continu de données
AVRO, un format de sérialisation des données largement adopté, est connu pour son efficacité dans la représentation de structures de données complexes et sa compatibilité avec divers langages de programmation. Lorsqu'elle est intégrée aux technologies de diffusion en continu, AVRO permet aux entreprises de transmettre et de traiter des données quasiment en temps réel, ce qui leur permet d'extraire des informations précieuses sans la latence généralement associée au traitement par lots.
OCI Streaming : transmission de données en temps réel
Oracle Cloud Infrastructure (OCI) dispose d'un large éventail d'outils pour la gestion des données dans le cloud, OCI Streaming étant un service de ce type adapté aux flux de données à haut débit en temps réel. Grâce à OCI Streaming, les développeurs peuvent créer des pipelines de données évolutifs et fiables qui assimilent, traitent et distribuent efficacement des flux de données.
Spark géré par OCI Data Flow : une solution sans verrouillage
Oracle Cloud Infrastructure (OCI) Data Flow est un service Apache Spark entièrement géré qui effectue des tâches de traitement sur des ensembles de données extrêmement volumineux sans infrastructure à déployer ou à gérer.
Traitement par micro-batch Le traitement par micro-batch consiste à décomposer les flux de données entrants en lots compacts en utilisant le temps ou la taille comme critère. Ces lots sont ensuite traités en tant que petits travaux. Contrairement à la gestion constante et individuelle des enregistrements dans le traitement de flux, le traitement par micro-batch introduit un peu de retard et de stockage avant le traitement, ce qui permet de mieux contrôler ce qu'il faut faire avec les données. Contrairement au traitement par lots traditionnel qui traite les ensembles de Big Data à intervalles réguliers, le traitement par micro-batch fournit un traitement et une livraison quasiment en temps réel des résultats.
Débloquer la synergie : OCI Streaming, OCI Data Flow et Oracle Functions
Ce tutoriel aborde la fusion d'OCI Streaming, d'OCI Data Flow a géré Spark Streaming et d'Oracle Functions. Nous vous guiderons tout au long du processus de configuration d'un pipeline de données de diffusion en continu de bout en bout qui ingère des messages encodés AVRO, les traite efficacement à l'aide des fonctionnalités de traitement par micro-batch Spark gérées par OCI Data Flow et introduit un traitement sans serveur basé sur des événements avec Oracle Functions.
Objectif
Utilisez le traitement micro-batch Spark géré par OCI Streaming et OCI Data Flow pour créer un pipeline de traitement de données efficace et en temps réel au format AVRO.
IMPORTANT : Ce tutoriel est conçu uniquement à des fins d'enseignement et d'étude. Il fournit un environnement permettant aux apprenants d'expérimenter et d'acquérir une expérience pratique dans un cadre contrôlé. Il est essentiel de noter que les configurations et pratiques de sécurité utilisées dans cet exercice pourraient ne pas convenir à des scénarios réels.
Les considérations de sécurité pour les applications du monde réel sont souvent beaucoup plus complexes et dynamiques. Par conséquent, avant de mettre en œuvre l'une des techniques ou configurations présentées ici dans un environnement de production, il est essentiel de procéder à une évaluation et à un examen complets de la sécurité. Cet examen devrait porter sur tous les aspects de la sécurité, y compris le contrôle d'accès, le cryptage, la surveillance et la conformité, afin de garantir que le système s'aligne sur les stratégies et normes de sécurité de l'organisation.
La sécurité doit toujours être une priorité absolue lors du passage d'un environnement de laboratoire à un déploiement réel.
Flux de processus
Architecture globale
Prérequis - Oracle Cloud Infrastructure
- Compte Oracle avec autorisations d'accès au niveau administrateur
- Un compartiment pour créer vos ressources : Notez l'ID de compartiment.
- VCN avec deux sous-réseaux (privés et publics), reportez-vous au tutoriel sur la création de réseau
- Assurez-vous que vos sous-réseaux disposent de règles entrantes appropriées pour la passerelle de service et les ports 443 et 80 pour les sous-réseaux privés et publics.
Prérequis - Environnement machine local
-
Instance de calcul Oracle Linux sur le sous-réseau PRIVATE. Ceci est important pour accéder aux ressources sur le sous-réseau PRIVATE, telles qu'OCI Streaming, les fonctions et les instances de conteneur qui seront déployées au cours de ce tutoriel.
-
Un hôte Bastion qui se connecte à l'instance de calcul Oracle Linux et effectue les tâches du tutoriel. Pour plus d'informations, reportez-vous à Présentation de Bastion.
-
Configuration locale d'OCI-CLI. Pour plus d'informations, reportez-vous au tutoriel sur l'installation de l'interface de ligne de commande.
-
DOCKER local pour pouvoir créer des images, si vous utilisez Oracle Linux, reportez-vous à Installation de Docker sur Oracle Linux.
-
Python local version 3.9.16 (au moins) installé pour les tests
-
Java JDK local 11.0.8
-
Maven local 3.5.4
-
Interface de ligne de commande FN locale pour pouvoir déployer votre fonction vers OCI : Installation de l'interface de ligne de commande FN
Tâche 1 : Configurer des groupes dynamiques
-
Accédez à votre domaine, cliquez sur Groupes dynamiques et créez les groupes suivants.
Nom de groupe : MyFunctions
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentID'}
Nom de groupe : ContainerIntances
ALL {resource.type='compute-container-instances', resource.compartment.id = 'pasteYourCompartmentID'}
Nom de groupe : DataFlowDynamicGroup
ALL {resource.type='dataflowrun', resource.compartment.id = 'pasteYourCompartmentID'}
Tâche 2 : créer des stratégies
-
Accédez à Stratégies et créez les stratégies suivantes.
Nom de stratégie : FunctionsPolicies
Allow dynamic-group MyFunctions to manage objects in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group ContainerIntances to manage objects in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group MyFunctions to read secret-bundles in compartment YOUR-COMPARTMENT-NAME
Nom de stratégie : StreamTopicPolicies
Allow dynamic-group ContainerIntances to read objects in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group ContainerIntances use stream-push in compartment YOUR-COMPARTMENT-NAME
Nom de stratégie : ContainerInstancesPolicy
Allow dynamic-group ContainerIntances to read repos in compartment YOUR-COMPARTMENT-NAME
Nom de stratégie : DataFlowPolicies
Allow dynamic-group DataFlowDynamicGroup to manage objects in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group DataFlowDynamicGroup to {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME} in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group DataFlowDynamicGroup to manage data-catalog-metastores in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group DataFlowDynamicGroup to manage object-family in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group DataFlowDynamicGroup to read secret-bundles in compartment YOUR-COMPARTMENT-NAME Allow service dataflow to read objects in compartment YOUR-COMPARTMENT-NAME
Tâche 3 : création de buckets de stockage et téléchargement du schéma AVRO
-
Accédez à Buckets, cliquez sur Créer un bucket et créez un bucket nommé avro-schema-bucket pour stocker le fichier de schéma AVRO.
-
Sélectionnez à présent votre bucket et PRENEZ NOTE de l'espace de noms, nous en aurons besoin ultérieurement.
-
Téléchargez le fichier user.asvc vers ce bucket créé.
Tâche 4 : création de la rubrique de transmission en continu OCI privée
-
Accédez à Analytics et IA, puis cliquez sur Streaming et créez un flux nommé FrontDoorTopic.
-
Sélectionnez Pools de flux de données, cliquez sur PrivatePool, puis sur l'option Paramètres de connexion Kafka et sur TKE NOTE des champs. Nous en aurons besoin ultérieurement.
Tâche 5 : création d'AUTH TOKEN
Créez AUTH TOKEN pour votre utilisateur. Cette opération est requise pour utiliser la rubrique Kafka
-
Cliquez sur l'icône en haut à droite de l'utilisateur, puis sélectionnez l'option Paramètres d'utilisateur.
-
Cliquez sur Jetons d'authentification, puis générez un nouveau jeton et TAKE NOTE de votre jeton.
Tâche 6 : création d'un registre de conteneurs
-
Accédez au menu Services de développeur, cliquez sur Registre de conteneurs et créez les référentiels privés suivants.
Nom de référentiel Type api-avro-sample_a Privé api-avro-sample_b Privé fn-recep-avro Privé -
Vérifiez les référentiels et TAKE NOTE de l'espace de noms.
-
Ouvrez le shell de terminal sur lequel l'interface de ligne de commande et Docker OCI sont installées, puis connectez-vous au registre. Vérifiez l'URL correcte de votre région. Dans ce tutoriel, nous utilisons Est du Brésil (Sao Paulo) où l'URL de registre est gru.ocir.io.
docker login gru.ocir.io Username: <your container namespace>/youruser Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
Tâche 7 : création d'OCI Vault
Créez OCI Vault et fournissez les variables nécessaires qui seront utilisées ultérieurement dans ce tutoriel.
-
Accédez à Identifier et sécurité, cliquez sur Coffre, puis sur Créer un coffre.
-
Sélectionnez le nouveau coffre et créez-en des clés de cryptage maître.
-
Créez une clé secrète nommée AUTH_KEY et collez la clé d'authentification que vous avez créée précédemment.
-
Répétez le processus de création de clé secrète et créez les clés secrètes suivantes :
Nom variable Valeur KAFKA_BOOTSTRAPSERVER "Le serveur boostrap de votre configuration OCI Streaming" KAFKA_TOPIC “FrontDoorTopic” KAFKA_USERNAME "Votre nom utilisateur + votre ID streampool à partir de votre configuration OCI Streaming" AUTH_KEY "Votre jeton AUTH que vous avez créé lors des étapes précédentes" -
Notez l'OCID de clé secrète créé pour chaque clé secrète et créez un fichier de configuration.
-
Le fichier config.properties contient les variables de mise en correspondance entre l'application et les instances de clé secrète du coffre. L'application utilisera ce fichier pour identifier les clés secrètes de coffre à collecter lors de l'exécution.
-
Créez un fichier sur l'ordinateur local sur lequel vous avez accès à l'interface de ligne de commande OCI :
Remplacez l'OCID de chaque sécurité
Nom de fichier : config.propertieskafka_bootstrapserver_vaultOCID=ocid1.vaultsecret.REPLACE-WITH-YOURS kafka_topic_vaultOCID=ocid1.vaultsecret.REPLACE-WITH-YOURSxxxxxx kafka_username_vaultOCID=ocid1.vaultsecret.REPLACE-WITH-YOURS auth_token_vaultOCID=ocid1.vaultsecret.oc1.REPLACE-WITH-YOURS
-
-
Accédez à Buckets, cliquez sur Créer un bucket et créez un bucket nommé config pour stocker le fichier
config.properties
. -
Téléchargez le fichier config.properties vers le bucket de stockage config.
ls -lrt config.properties oci os object put -bn config --file config.properties --force
Tâche 8 : créez un message AVRO simple et enregistrez-le dans un fichier à l'aide de l'exemple de code python fourni
-
Ouvrez le terminal shell sur lequel l'interface de ligne de commande OCI, Docker et Python3 sont installés et créez un fichier AVRO contenant un message unique basé sur le même schéma AVRO que celui que nous avons téléchargé précédemment dans le stockage d'objets.
Remarque : vous devez vérifier la version de Python, nous utilisons Python 3.9.16 dans ce tutoriel, les versions antérieures risquent de ne pas fonctionner.
-
Obtenez le code à partir d'ici Create_avro_sample.zip.
-
Décompressez-l'à l'emplacement de votre choix, puis exécutez le programme pour générer un exemple de message AVRO :
cd ~ mkdir create_avro_sample cd create_avro_sample unzip CreateAVRO_SampleFile.zip # Check the files are there ls -lrt # install the python dependencies on requirements.txt pip3 install -r requirements.txt # Run the program and create an AVRO message file python3 create_avro_sample.py meu_file.bin '{"id":10029,"name":"John","email":"john@bla.com"}'
Tâche 9 : création de la fonction OCI pour recevoir le message AVRO et publication dans la rubrique OCI Streaming
-
Accédez à Services de développeur, sous Functions, cliquez sur Applications, puis sur Créer une application.
-
Accédez à votre shell de terminal sur lequel vous avez installé Docker, l'interface de ligne de commande OCI, l'interface de ligne de commande FN et exécutez les commandes suivantes pour initialiser la fonction.
Remarque : si vous avez suivi les étapes, votre commande de connexion Docker a déjà été exécutée pour le moment. Sinon, passez à l'étape de connexion Docker sur la tâche Créer un registre de conteneurs.
fn create context oci-cloud --provider oracle fn use context oci-cloud fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE
Remarque : dans ce tutoriel, nous utilisons la région Est du Brésil (Sao Paulo). Si vous utilisez une autre région, vous devez modifier les emplacements api-url et registre.
-
Créez une fonction Hello-world simple pour vous assurer que tous vos paramètres sont corrects.
fn init --runtime python fn-recep-avro cd fn-recep-avro fn deploy --app MyReceptionApp fn invoke MyReceptionApp fn-recep-avro
-
Obtenez l'exemple de code de la fonction AVRO dans le fichier fn-recep-avro.zip et remplacez le code hello-world créé précédemment. Vous devez obtenir les fichiers func.py et requirements.txt pour pouvoir travailler.
# Check you have the right code for func.py & requirements.txt (you got from zip file) ls -lrt
-
Créer le nouveau code et déployer la fonction
fn deploy --app MyReceptionApp
-
Pour appeler la fonction, nous devons transmettre un message AVRO en tant que paramètre. Pour cela, nous allons utiliser l'exemple de fichier de messages AVRO créé à partir des étapes précédentes. La première fois qu'une fonction est appelée, elle prend un peu plus de temps car elle doit être démarrée.
# Check where you created the sample avro message file ls -lrt ../create_avro_sample/ # Invoke the function to check if it's working as expected echo -n -e "$(cat ../create_avro_sample/meu_file.bin)" | fn invoke MyReceptionApp fn-recep-avro
Tâche 10 : création d'une passerelle d'API pour exposer la fonction
-
Dans votre console, cliquez sur Services de développeur, puis, sous Gestion des API, cliquez sur Passerelles, puis sur Créer une passerelle.
-
Une fois créées, cliquez sur l'option Déploiements, puis sur Créer un déploiement.
Nom : RecepFunction
Préfixe de chemin : /- Dans Authentification, choisissez Aucune authentification car il s'agit d'un exercice simple et aucune authentification d'API n'est implémentée. L'objectif principal ici est de démontrer un appel HTTPS passant par un message AVRO binaire via API, et dans le cadre de cet exercice, nous n'implémenterons aucune méthode d'authentification pour ce laboratoire simple.
- Avant de passer à un environnement réel, veillez à suivre les meilleures pratiques de sécurité pour API Gateway.
- Pour plus de détails, reportez-vous à Sécurisation des passerelles et des ressources d'API.
Routage 1 : Chemin : /
Méthos : POST
Type de back-end : fonctions Oracle
Application : sélectionnez votre fonction -
Vérifiez l'adresse de passerelle d'API et prenez note.
-
Ouvrez le terminal shell Linux et appelez API Gateway. Remplacez l'URL d'API par l'adresse correcte obtenue à l'étape précédente.
cd create_avro_sample/ ls -lrt curl -X POST -H "Content-Type: application/octet-stream" \ -d "$(echo -n -e "$(cat meu_file.bin)")" \ https://xxxxxxxxxxxxx.apigateway.sa-saopaulo-1.oci.customer-oci.com/
Point de reprise
Tâche 11 : création d'une image de conteneur pour le type d'API A
Remarque : les API de type A et B sont fondamentalement identiques avec un message d'en-tête différent pour simuler deux API différentes.
-
Obtenez le code de l'API type A et décompressez-le dans votre terminal shell Linux api-avro-sample_a.zip.
-
Obtenez l'espace de noms du registre de conteneurs obtenu lors des étapes précédentes et créez l'emplacement du registre d'applications, en suivant le modèle ci-dessous. L'URL d'ocir est basée sur votre région, c'est-à-dire gru.ocir.io pour Brasil East(SaoPaulo)
[ocir url]/[votre espace de noms]/api-avro-sample_a:latest
-
Dans votre terminal shell Linux, créez et propagez l'image docker pour cette API.
ls -lrt docker build . -t gru.ocir.io/yournamespace/api-avro-sample_a:latest docker push gru.ocir.io/yournamespace/api-avro-sample_a:latest
Tâche 12 : création d'une image de conteneur pour le type d'API B
-
Obtenez le code de l'API type B et décompressez-le dans votre terminal shell Linux api-avro-sample_b.zip.
-
Obtenez l'espace de noms du registre de conteneurs obtenu lors des étapes précédentes et créez l'emplacement du registre d'applications, en suivant le modèle ci-dessous. L'URL d'ocir est basée sur votre région, c'est-à-dire gru.ocir.io pour Brasil East(SaoPaulo)
[ocir url]/[votre espace de noms]/api-avro-sample_b:latest
-
Dans votre terminal shell Linux, créez et propagez l'image docker pour cette API.
ls -lrt docker build . -t gru.ocir.io/yournamespace/api-avro-sample_b:latest docker push gru.ocir.io/yournamespace/api-avro-sample_b:latest
-
Vérifiez sur votre page de registre de conteneurs si l'image a été propagée avec succès.
Tâche 13 : déploiement des API dans le service de conteneur
-
Accédez à Services de développeur, Instances de conteneur et cliquez sur Créer une instance de conteneur.
-
Répétez l'étape 1 pour api-type-b et sélectionnez l'image correcte pour l'API TYPE B.
-
Accédez à Services de développeur, Instances de conteneur, cliquez sur Créer une instance de conteneur et répétez les étapes de déploiement du type d'API B.
-
Obtenez l'adresse de nom de domaine qualifié complet interne à partir de vos instances de conteneur.
- Cliquez sur l'instance de conteneur et notez chaque adresse de nom de domaine qualifié complet interne.
-
Accédez à Identifier et fixer le secret, cliquez sur Coffre, sélectionnez votre VAULT et créez deux secrets.
Nom secret Valeur API_TYPE_A_URL coller l'adresse privée de nom de domaine qualifié complet interne pour l'API de type A API_TYPE_B_URL coller l'adresse privée de nom de domaine qualifié complet interne pour le type d'API B Prenez note de chaque OCID de clé secrète
Votre coffre doit se présenter comme suit :
-
Modifiez le fichier config.properties que vous avez téléchargé vers le bucket de stockage config et ajoutez de nouvelles entrées pour l'OCID de clé secrète.
ls -lrt config.properties vi config.properties api_type_a_url_vaultOCID=paste_API_TYPE_A_URL_secretOCID api_type_b_url_vaultOCID=paste_API_TYPE_B_URL_secretOCID # After save, please upload the new version to Object Storage cat config.properties oci os object put -bn config --file config.properties --force
Votre fichier se présente comme suit :
-
Tâche 14 : test des API à l'aide de create_avro_sample.py
-
Accédez à votre terminal shell Linux où vous avez enregistré le fichier create_avro_sample.py à partir de la tâche 7 et créez des messages pour tester les appels d'API. Nous créons deux nouveaux fichiers AVRO avec des ID différents (1010 et 1020) que nous utiliserons comme filtre dans le programme Spark Stream (DataFlow).
ls -lrt python3 create_avro_sample.py type_a_message.bin '{"id":1010,"name":"Paul that goes to API type A","email":"paul@bla.com"}' python3 create_avro_sample.py type_b_message.bin '{"id":1020,"name":"Mary that goes to API type B","email":"mary@bla.com"}'
-
Appeler les API transmettant le message AVRO à tester fonctionne correctement. Accédez à votre page Instances de conteneur et obtenez l'adresse de nom de domaine qualifié complet interne pour chacune des API api-type-a et api-type-b. N'oubliez pas de remplacer l'URL ci-dessous pour l'adresse de nom de domaine qualifié complet interne correspondante à partir de vos API.
ls -lrt type* curl -i -X POST -H "Content-Type: application/octet-stream" \ --data-binary "@type_a_message.bin" \ xxx.xx.x.xxx curl -i -X POST -H "Content-Type: application/octet-stream" \ --data-binary "@type_b_message.bin" \ xxx.xxx.xx.xxx
Tâche 15 : configuration de l'application de transmission en continu Java Spark
-
Accédez à Buckets, cliquez sur Créer un bucket et créez deux buckets appelés dataflow-app-avro et dataflow-logs-avro. Cette opération sera utilisée pour télécharger l'application java.
-
Vérifiez deux fois les versions de votre environnement java.
Java
java 11.0.8 2020-07-14 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.8+10-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode)
Maven
Apache Maven 3.5.4 (Red Hat 3.5.4-5) Maven home: /usr/share/maven Java version: 11.0.20, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-11-openjdk-11.0.20.0.8-3.0.1.el8.x86_64 Default locale: en_US, platform encoding: ANSI_X3.4-1968 OS name: "linux", version: "5.15.0-103.114.4.el8uek.x86_64", arch: "amd64", family: "unix"
-
Téléchargez l'exemple de code et décompressez-le sur votre environnement local comportant oci-cli, docker, java et maven : spark-consume-avro-message.zip.
unzip spark-consume-avro-message.zip cd spark-consume-avro-message ls -lrt
Un petit aperçu du code proxy pour appeler les types d'instance de conteneur A et B.
Vérifiez le fichier de programme principal .src/main/java/example/Example.java....
-
Etant donné que ce programme Java utilise une bibliothèque pour gérer spark-avro, nous devons packager la dépendance pour la transmettre au flux de données. Pour cela, nous allons utiliser Data Flow Dependency Packager. Si vous avez besoin de plus de détails, vous pouvez accéder à Data Flow Dependency Packager.
Le package org.apache.spark:spark-avro_2.12 :3.2.1 est déjà déclaré dans le fichier packages.txt. Vous devez simplement le packager en exécutant :
docker run --privileged --platform linux/amd64 --rm -v $(pwd):/opt/dataflow --pull always -it phx.ocir.io/oracle/dataflow/dependency-packager:latest -p 3.8
-
Téléchargez le fichier archive.zip dans le bucket de stockage appelé dataflow-app-avro à l'aide d'oci-cli.
oci os object put -bn dataflow-app-avro --file archive.zip --force
-
Compilez, packagez l'application java et téléchargez-la vers le bucket de stockage dataflow-app-avro.
ls -lrt mvn clean install
...réduction du nombre de lignes du journal de compilation...# upload the JAR file to the storage bucket oci os object put -bn dataflow-app-avro --file target/consumekafka-1.0-SNAPSHOT.jar --force
-
Vérifiez votre bucket de stockage dataflow-app-avro actuel et assurez-vous qu'il ressemble à ceci.
-
Accédez à Analytics et IA, puis sous Data Lake, cliquez sur Data Flow, sélectionnez le menu de gauche Adresses privées et cliquez sur Créer une adresse privée.
-
L'adresse privée est nécessaire car nous utilisons le sous-réseau PRIVATE pour les instances de conteneur et le pool OCI Streaming.
-
Veillez à remplir les zones DNS avec le nom de domaine qualifié complet interne des instances de conteneur OCI et du pool OCI Streaming avec une délimitation par des virgules.
-
-
Accédez à Analytics et IA, puis sous Lac de données, cliquez sur Flux de données, puis sur Créer une application.
-
Une fois créé, sélectionnez le flux de données spark-lab-avro, puis cliquez sur Run pour démarrer le programme, le démarrage prend généralement jusqu'à 8 minutes.
-
-
Vérifiez l'application de flux de données en cours d'exécution et ouvrez le fichier SparkUI qui affichera les travaux en cours et l'application fonctionne.
Tâche 16 : validation du flux
Appelez la fonction et transmettez un message pour vérifier que tout le flux fonctionne comme prévu.
-
Ouvrez le terminal shell Linux dans lequel vous avez créé les exemples de message type_a_message.bin et type_b_message.bin, puis envoyez le message. Remplacez l'URL d'API par l'adresse correcte obtenue lors de la création de la passerelle d'API.
cd create_avro_sample/ ls -lrt curl -X POST -H "Content-Type: application/octet-stream" \ -d "$(echo -n -e "$(cat type_a_message.bin)")" \ https://xxxxxxxxxxxxx.apigateway.sa-saopaulo-1.oci.customer-oci.com/
-
Vérifions si le type d'API A a été appelé en consultant les journaux sur l'instance de conteneur.
Vous pouvez répéter le processus et envoyer un fichier type_b_message.bin, et il appellera l'instance de conteneur de type B.
Liens connexes
Remerciements
- Auteur - Joao Tarla (ingénieur solutions Oracle LAD A-Team)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour consulter la documentation produit, consultez Oracle Help Center.
Stream AVRO Messages with Oracle Cloud Infrastructure Streaming and OCI Data Flow with Micro-Batch processing
F86501-01
September 2023
Copyright © 2023, Oracle and/or its affiliates.