Remarque :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- 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.
Traiter des fichiers volumineux dans Autonomous Database et Kafka avec Oracle Cloud Infrastructure Data Flow
Introduction
Oracle Cloud Infrastructure (OCI) Data Flow est un service entièrement géré permettant d'exécuter des applications Apache Spark TM. Data Flow est utilisé pour le traitement de fichiers volumineux, la transmission en continu, les opérations de base de données et vous pouvez créer de nombreuses applications avec un traitement très évolutif. Apache Spark peut redimensionner et utiliser des machines en cluster pour paralléliser des travaux avec une configuration minimale.
Avec Apache Spark en tant que service géré (Data Flow), vous pouvez ajouter de nombreux services évolutifs pour multiplier la puissance du traitement cloud. Ce tutoriel vous explique comment utiliser :
- Object Storage : référentiel de fichiers à faible coût et évolutif
- Autonomous Database : en tant que base de données évolutive dans le cloud
- Streaming : en tant que service géré Kafka évolutif
Dans ce tutoriel, vous pouvez voir les activités les plus courantes utilisées pour traiter des fichiers volumineux, interroger la base de données et fusionner/joindre les données pour former une autre table en mémoire. Vous pouvez écrire ces données massives dans votre base de données et dans une file d'attente Kafka avec un coût très bas et des performances élevées.
Objectifs
- Apprendre à utiliser Data Flow pour traiter une grande quantité de données
- Apprendre à intégrer des services évolutifs : File Repository, Database et Queue
Prérequis
-
Locataire Oracle Cloud opérationnel : vous pouvez créer un compte Oracle Cloud gratuit avec 300,00 USD par mois pour tester ce tutoriel. Reportez-vous à Création d'un compte Oracle Cloud gratuit
-
Interface de ligne de commande OCI (interface de ligne de commande Oracle Cloud) installée sur votre ordinateur local : lien permettant d'installer l'interface de ligne de commande OCI.
-
Application Apache Spark installée sur votre ordinateur local. Consultez Développement local d'applications Oracle Cloud Infrastructure Data Flow et déploiement vers le cloud pour découvrir comment développer vos applications en local et dans Data Flow.
Remarque : il s'agit de la page officielle à installer : Apache Spark. Il existe d'autres procédures pour installer Apache Spark pour chaque type de système opérationnel (Linux/Mac OS/Windows).
-
Interface de ligne de commande de soumission Spark installée. Lien permettant d'installer l'interface de ligne de commande de soumission Spark.
-
Maven installé sur votre ordinateur local.
-
Connaissance des concepts OCI :
- Catégories
- Stratégies IAM
- Location
- OCID de vos ressources
Tâche 1 : création de la structure Object Storage
Object Storage sera utilisé comme référentiel de fichiers par défaut. Vous pouvez utiliser d'autres types de référentiel de fichiers, mais Object Storage est un moyen simple et économique de manipuler des fichiers avec de meilleures performances. Dans ce tutoriel, les deux applications chargeront un fichier CSV volumineux à partir du stockage d'objets, indiquant comment Apache Spark est rapide et intelligent pour traiter un volume élevé de données.
-
Créer un compartiment : les compartiments sont importants pour organiser et isoler vos ressources cloud. Vous pouvez isoler vos ressources en fonction des stratégies IAM.
-
Vous pouvez utiliser ce lien pour comprendre et configurer les stratégies des compartiments : Gestion des compartiments
-
Créez un compartiment pour héberger toutes les ressources des 2 applications de ce tutoriel. Créez un compartiment nommé analytics.
-
Accédez au menu principal Oracle Cloud et recherchez : Identité et sécurité, Compartiments. Dans la section Compartiments, cliquez sur Créer un compartiment et entrez le nom.
Remarque : vous devez accorder l'accès à un groupe d'utilisateurs et inclure votre utilisateur.
-
Cliquez sur Créer un compartiment pour inclure le compartiment.
-
-
Créez votre bucket dans Object Storage : les buckets sont des conteneurs logiques pour le stockage d'objets. Tous les fichiers utilisés pour cette démo seront donc stockés dans ce bucket.
-
Accédez au menu principal Oracle Cloud et recherchez Stockage et Buckets. Dans la section Buckets, sélectionnez votre compartiment (analytiques), créé précédemment.
-
Cliquez sur Créer un bucket. Créer 4 buckets : apps, data, dataflow-logs, Wallet
-
Entrez les informations de nom de bucket avec ces 4 buckets et conservez les autres paramètres avec la sélection par défaut.
-
Pour chaque bucket, cliquez sur Créer. Vous pouvez voir les buckets créés.
-
Remarque : vérifiez les stratégies IAM pour le bucket. Vous devez configurer les stratégies si vous souhaitez utiliser ces buckets dans vos applications de démonstration. Vous pouvez consulter les concepts et effectuer la configuration ici Présentation d'Object Storage et Stratégies IAM.
Tâche 2 : création d'Autonomous Database
Oracle Cloud Autonomous Database est un service géré pour Oracle Database. Pour ce tutoriel, les applications se connecteront à la base de données via un portefeuille pour des raisons de sécurité.
-
Instanciez Autonomous Database comme décrit ici : Provisionner Autonomous Database.
-
Dans le menu principal Oracle Cloud, sélectionnez l'option Data Warehouse, sélectionnez Oracle Database et Autonomous Data Warehouse, sélectionnez votre compartiment analytiques et suivez le tutoriel pour créer l'instance de base de données.
-
Nommez votre instance Journaux traités, choisissez Journaux comme nom de base de données et vous n'avez pas besoin de modifier de code dans les applications.
-
Entrez le mot de passe ADMIN et téléchargez le fichier ZIP du portefeuille.
-
Après avoir créé la base de données, vous pouvez configurer le mot de passe utilisateur ADMIN et télécharger le fichier ZIP Wallet.
-
Enregistrez votre fichier ZIP de portefeuille (
Wallet_logs.zip
) et annotez votre mot de passe ADMIN. Vous devez configurer le code de l'application. -
Accédez à Stockage, Buckets. Passez au compartiment analytics et le bucket Wallet apparaît. Cliquez dessus.
-
Pour télécharger le fichier ZIP de portefeuille, cliquez simplement sur Télécharger et joignez le fichier Wallet_logs.zip.
Remarque : passez en revue les stratégies IAM permettant d'accéder à Autonomous Database ici : Stratégie IAM pour Autonomous Database
Tâche 3 : charger les fichiers échantillon CSV
Pour démontrer la puissance d'Apache Spark, les applications lisent un fichier CSV de 1 000 000 lignes. Ces données seront insérées dans la base de données Autonomous Data Warehouse avec une seule ligne de commande et publiées sur une diffusion en continu Kafka (Oracle Cloud Streaming). Toutes ces ressources sont évolutives et parfaites pour un volume de données élevé.
-
Téléchargez ces 2 liens et téléchargez-les vers le bucket data :
-
Remarque :
- organizations.csv comporte seulement 100 lignes, uniquement pour tester les applications sur votre ordinateur local.
- organizations1M.csv contient 1 000 000 lignes et sera utilisé pour s'exécuter sur l'instance Data Flow.
-
Dans le menu principal d'Oracle Cloud, accédez à Stockage et à Buckets. Cliquez sur le bucket data et téléchargez les 2 fichiers de l'étape précédente.
-
Télécharger une table auxiliaire vers la base de données ADW
-
Téléchargez ce fichier pour le téléchargement vers la base de données ADW : GDP PER CAPTA COUNTRY.csv
-
Dans le menu principal d'Oracle Cloud, sélectionnez Oracle Database et Autonomous Data Warehouse.
-
Cliquez sur l'instance Journaux traités pour visualiser les détails.
-
Cliquez sur Actions de base de données pour accéder aux utilitaires de base de données.
-
Entrez vos informations d'identification pour l'utilisateur ADMIN.
-
Cliquez sur l'option SQL pour accéder aux utilitaires de requête.
-
Cliquez sur Chargement des données.
-
Déposez le fichier GDP PER CAPTA COUNTRY.csv dans le panneau de la console et procédez à l'importation des données dans une table.
-
La nouvelle table nommée GDPPERCAPTA a été importée.
Tâche 4 : création d'un coffre secret pour votre mot de passe ADMIN ADW
Pour des raisons de sécurité, le mot de passe ADMIN ADW sera enregistré dans un coffre. Oracle Cloud Vault peut héberger ce mot de passe en toute sécurité et est accessible sur votre application avec l'authentification OCI.
-
Créez votre clé secrète dans un coffre, comme décrit dans la documentation suivante : Ajoutez le mot de passe d'administrateur de base de données à Vault
-
Créez une variable nommée PASSWORD_SECRET_OCID dans vos applications et entrez l'OCID.
Remarque : vérifiez la stratégie IAM pour OCI Vault ici : stratégie IAM OCI Vault.
Tâche 5 : création d'une diffusion en continu Kafka avec le service Oracle Cloud Streaming
Oracle Cloud Streaming est un service Kafka de diffusion en continu géré. Vous pouvez développer des applications à l'aide des API Kafka et des SDK courants. Dans ce tutoriel, vous allez créer une instance de Streaming et la configurer pour l'exécuter dans les deux applications afin de publier et d'utiliser un grand volume de données.
-
Dans le menu principal d'Oracle Cloud, accédez à Analytics et IA, Streams.
-
Remplacez le compartiment par analytics. Chaque ressource de cette démonstration sera créée sur ce compartiment. Le service IAM est ainsi plus sécurisé et plus facile à contrôler.
-
Cliquez sur Créer un flux de données.
-
Entrez le nom kafka_like (par exemple) et vous pouvez conserver tous les autres paramètres avec les valeurs par défaut.
-
Cliquez sur Créer pour initialiser l'instance.
-
Attendez le statut Active. Vous pouvez désormais utiliser l'instance.
Remarque : lors du processus de création de la transmission en continu, vous pouvez sélectionner l'option Créer automatiquement un pool de flux de données par défaut pour créer automatiquement votre pool par défaut.
-
Cliquez sur le lien DefaultPool.
-
Affichez le paramètre de connexion.
-
Annotez ces informations comme vous en aurez besoin à l'étape suivante.
Remarque : passez en revue les stratégies IAM pour OCI Streaming ici : Stratégie IAM pour OCI Streaming.
Tâche 6 : génération d'un TOKEN AUTH pour accéder à Kafka
Vous pouvez accéder à OCI Streaming (API Kafka) et à d'autres ressources dans Oracle Cloud avec un jeton d'authentification associé à votre utilisateur sur OCI IAM. Dans les paramètres de connexion Kafka, les chaînes de connexion SASL comportent un paramètre nommé password et une valeur AUTH_TOKEN, comme décrit dans la tâche précédente. Pour activer l'accès à OCI Streaming, vous devez accéder à votre utilisateur sur la console OCI et créer un TOKEN AUTH.
-
Dans le menu principal d'Oracle Cloud, accédez à Identité et sécurité, Utilisateurs.
Remarque : l'utilisateur dont vous avez besoin pour créer l'élément AUTH TOKEN est configuré avec l'interface de ligne de commande OCI et toutes les configurations Stratégies IAM pour les ressources créées jusqu'à présent. Les ressources sont les suivantes :
- Oracle Cloud Autonomous Data Warehouse
- Oracle Cloud Streaming
- Oracle Object Storage
- Oracle Data Flow
-
Cliquez sur votre nom d'utilisateur pour afficher les détails.
-
Cliquez sur l'option Jetons d'authentification dans la partie gauche de la console et cliquez sur Générer un jeton.
Remarque : le jeton sera généré uniquement à cette étape et ne sera plus visible une fois l'étape terminée. Copiez la valeur et enregistrez-la. Si vous perdez la valeur de jeton, vous devez à nouveau générer le jeton d'authentification.
Tâche 7 : configurer les applications de démonstration
Ce tutoriel comporte 2 applications de démonstration pour lesquelles nous allons configurer les informations requises :
-
Java-CSV-DB : cette application lit 1 000 000 lignes d'un fichier CSV (organizations1M.csv) et exécute certains processus habituels dans un scénario commun d'intégration à une base de données (Oracle Cloud Autonomous Data Warehouse) et une diffusion en continu Kafka (Oracle Cloud Streaming).
La démonstration montre comment fusionner un jeu de données CSV avec une table auxiliaire dans la base de données et croiser les types de tables générant un troisième jeu de données en mémoire. Après l'exécution, l'ensemble de données sera inséré sur ADW et publié sur la diffusion en continu Kafka.
-
JavaConsumeKafka : cette application répétera certaines étapes de la première application uniquement pour prendre de la CPU et de la mémoire pour un volume élevé de traitement. La différence est que la première application publie dans la diffusion en continu Kafka, tandis que cette application lit à partir de la diffusion en continu.
-
Téléchargez les applications à l'aide des liens suivants :
-
Recherchez les détails suivants dans la console Oracle Cloud :
-
Espace de noms de location
-
Clé secrète de mot de passe
-
Paramètres de connexion de transmission en continu
-
Jeton d'authentification
-
-
Ouvrez les fichiers ZIP téléchargés (
Java-CSV-DB.zip
etJavaConsumeKafka.zip
). Accédez au dossier /src/main/java/example et recherchez le code Example.java.-
Il s'agit des variables à modifier avec les valeurs des ressources de votre location.
NOM DE VARIABLE NOM DE RESSOURCE TITRE DES INFORMATIONS NAMESPACE ESPACE DE NOMS DE LOCATION LOCATION OBJECT_STORAGE_NAMESPACE ESPACE DE NOMS DE LOCATION LOCATION PASSWORD_SECRET_OCID PASSWORD_SECRET_OCID OCID streamPoolId Paramètres de connexion de transmission en continu Valeur ocid1.streampool.oc1.iad..... dans la chaîne de connexion SASL kafkaUsername Paramètres de connexion de transmission en continu valeur usename in " " dans la chaîne de connexion SASL kafkaPassword Jeton d'authentification La valeur est affichée uniquement à l'étape de création
-
Remarque : toutes les ressources créées pour ce tutoriel se trouvent dans la région US-ASHBURN-1. Vérifiez la région que vous souhaitez utiliser. Si vous modifiez la région, vous devez modifier les détails suivants dans les 2 fichiers de code :
Example.java : modifiez la variable bootstrapServers en remplaçant "us-ashburn-1" par la nouvelle région.
OboTokenClientConfigurator.java : modifiez la variable CANONICAL_REGION_NAME avec la nouvelle région.
Tâche 8 : comprendre le code Java
Ce tutoriel a été créé en Java et ce code peut également être porté en Python. Le didacticiel est divisé en 2 parties :
-
Application 1 à publier vers Kafka Streaming
-
Application 2 à consommer à partir de Kafka Streaming
Pour prouver l'efficacité et l'évolutivité, les deux applications ont été développées pour montrer certaines possibilités dans un cas d'utilisation commun d'un processus d'intégration. Le code des deux applications présente donc les exemples suivants :
-
Lire un fichier CSV avec 1 000 000 lignes
-
Préparer le portefeuille ADW pour la connexion via une connexion JDBC
-
Insérer 1 000 000 lignes de données CSV dans la base de données ADW
-
Exécuter une phrase SQL pour interroger une table ADW
-
Exécuter une phrase SQL pour joindre un jeu de données CSV à une table de jeux de données ADW
-
Exécuter une boucle du jeu de données CSV pour présenter une itération avec les données
-
Fonctionnement avec Kafka Streaming
Cette démonstration peut être exécutée sur votre ordinateur local et peut être déployée dans l'instance Data Flow pour être exécutée en tant que travail.
Remarque : pour le travail Data Flow et votre machine locale, utilisez la configuration de l'interface de ligne de commande OCI pour accéder aux ressources OCI. Du côté du flux de données, tout est préconfiguré. Il n'est donc pas nécessaire de modifier les paramètres. Côté machine locale, installez l'interface de ligne de commande OCI et configurez le locataire, l'utilisateur et la clé privée pour accéder à vos ressources OCI.
Affichons le code Example.java
dans les sections :
-
Initialisation Apache Spark : cette partie du code représente l'initialisation Spark. La plupart des configurations permettant d'exécuter les processus d'exécution sont configurées automatiquement. Il est donc très facile d'utiliser le moteur Spark.
-
Lire un fichier volumineux dans de nombreux formats : le moteur et le kit SDK Apache Spark autorisent un chargement et une écriture rapides des formats de fichier. Un volume élevé peut être manipulé en secondes, voire en millisecondes. Vous pouvez donc fusionner, filtrer et joindre des jeux de données en mémoire et manipuler différentes sources de données.
-
Lisez la clé secrète ADW Vault : cette partie du code accède à votre coffre pour obtenir la clé secrète de votre instance ADW.
-
Lisez le fichier
Wallet.zip
pour vous connecter via JDBC : cette section indique comment charger le fichierWallet.zip
à partir d'Object Storage et configurer le pilote JDBC. -
Insérez 1 000 000 lignes de jeu de données CSV dans la base de données ADW : à partir du jeu de données CSV, il est possible d'insérer directement dans la base de données ADW. Apache Spark peut optimiser l'exécution en utilisant toute la puissance des machines en cluster, des CPU et de la mémoire pour obtenir les meilleures performances.
-
Transformation des données : Imaginez le chargement de nombreux fichiers CSV, l'interrogation de certaines tables de la base de données dans des jeux de données, JOIN, le filtrage, l'élimination des colonnes, le calcul et de nombreuses autres opérations sur quelques lignes de code, en une fraction du temps et l'exécution d'une opération d'écriture dans n'importe quel format. Dans cet exemple, un jeu de données nommé oracleDF2 a été créé à partir d'un jeu de données CSV et d'un jeu de données de base de données ADW.
-
Parcourir avec un jeu de données dans une boucle : Voici un exemple d'itération de boucle sur le jeu de données CSV (1 000 000 lignes). L'objet row contient le mappage de la structure des champs CSV. Vous pouvez donc obtenir les données de chaque ligne et exécuter des appels d'API et de nombreuses autres opérations.
-
Opérations Kafka : préparation de la connexion à OCI Streaming à l'aide de l'API Kafka.
Remarque : Oracle Cloud Streaming est compatible avec la plupart des API Kafka.
-
Après avoir configuré les paramètres de connexion, le code indique comment produire et utiliser la transmission en continu.
Tâche 9 : packager votre application avec Maven
Avant d'exécuter le travail dans Apache Spark, il est nécessaire de packager votre application avec Maven. Maven est l'un des utilitaires les plus connus pour packager des applications avec des bibliothèques et des plug-ins.
Remarque :
Vous pouvez exécuter un test rapide en modifiant le fichier CSV avec un autre fichier avec seulement 100 lignes. Pour ce faire, recherchez simplement le code suivant dans le fichier Example.java : private static String INPUT_PATH = "oci://data@" + OBJECT_STORAGE_NAMESPACE + "/organizations1M.csv" ;
Remplacez
organizations1M.csv
parorganizations.csv
et l'exécution sera beaucoup plus rapide.
-
Package Java-CSV-DB
-
Accédez au dossier /Java-CSV-DB et exécutez la commande suivante :
mvn package
-
Vous pouvez voir Maven démarrer le package.
-
Si tout est correct, le message Success s'affiche.
-
Pour tester votre application sur votre ordinateur Apache Spark local, exécutez la commande suivante :
spark-submit --class example.Example target/loadadw-1.0-SNAPSHOT.jar
-
-
Package JavaConsumeKafka
-
Accédez au dossier /JavaConsumeKafka et exécutez la commande suivante :
mvn package
-
Vous pouvez voir Maven démarrer le package.
-
Si tout est correct, le message Success s'affiche.
-
Pour tester votre application sur votre machine Apache Spark locale, exécutez la commande suivante :
spark-submit --class example.Example target/loadkafka-1.0-SNAPSHOT.jar
-
Tâche 10 : vérifier l'exécution
-
Confirmer les insertions ADW
-
Accédez au menu principal Oracle Cloud, sélectionnez Oracle Database et Autonomous Data Warehouse.
-
Cliquez sur l'instance Journaux traités pour visualiser les détails.
-
Cliquez sur Actions de base de données pour accéder aux utilitaires de base de données.
-
Entrez vos informations d'identification pour l'utilisateur ADMIN.
-
Cliquez sur l'option SQL pour accéder aux utilitaires de requête.
-
Exécutez une requête pour afficher les 1 000 000 lignes de votre table.
-
-
Confirmer les journaux d'exécution
-
Vous pouvez voir dans les journaux d'exécution si le travail peut accéder aux jeux de données et les charger.
-
Tâche 11 : création et exécution d'un travail Data Flow
Désormais, avec les deux applications exécutées sur votre machine Apache Spark locale, vous pouvez les déployer dans Oracle Cloud Data Flow de votre location.
-
Dans le menu principal d'Oracle Cloud, accédez à Analytics et IA et à Data Flow.
-
Veillez à sélectionner le compartiment analytics avant de créer une application Data Flow.
-
Cliquez sur Créer une application.
-
Renseignez les paramètres comme indiqué dans l'image suivante :
-
Cliquez sur Créer.
-
Après la création, cliquez sur le lien Redimensionner la démo pour afficher les détails.
-
Cliquez sur Exécuter pour exécuter le travail.
-
Confirmez les paramètres et cliquez à nouveau sur Exécuter.
-
Affichez le statut du travail, attendez que le statut passe à Succès et que vous puissiez voir les résultats.
Etapes suivantes
La première application publie des données dans Kafka Streaming. La deuxième application utilise ces données de Kafka.
-
Créez une autre application Data Flow en suivant les mêmes étapes que lors de la création de la première application Data Flow.
-
Vous devez modifier le nom de votre application et remplacer le package loadadw-1.0-SNAPSHOT.jar par loadkafka-1.0-SNAPSHOT.jar.
-
Vous pouvez conserver les autres paramètres pour qu'ils soient identiques à la première application Data Flow et exécuter le travail.
Liens connexes
Remerciements
- Auteur - Cristiano Hoshikawa (ingénieur solutions A-Team LAD)
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.
Process large files in Autonomous Database and Kafka with Oracle Cloud Infrastructure Data Flow
F79141-01
March 2023
Copyright © 2023, Oracle and/or its affiliates.