Nota:
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriversi a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Elabora file di grandi dimensioni in Autonomous Database e Kafka con Oracle Cloud Infrastructure Data Flow
Introduzione
Oracle Cloud Infrastructure (OCI) Data Flow è un servizio completamente gestito per l'esecuzione delle applicazioni Apache Spark TM. Data Flow viene usato per elaborare file di grandi dimensioni, lo streaming, le operazioni del database e puoi creare un sacco di applicazioni con un'elaborazione estremamente scalabile. Apache Spark può ridimensionare e utilizzare computer in cluster per parallelizzare i job con una configurazione minima.
Grazie ad Apache Spark come servizio gestito (Data Flow), puoi aggiungere molti servizi scalabili per moltiplicare l'efficacia dell'elaborazione cloud e questa esercitazione descrive come utilizzare:
- Storage degli oggetti: un repository di file a costi contenuti e scalabile
- Autonomous Database: database scalabile nel cloud
- Streaming: servizio gestito da Kafka ad alta scalabilità
In questa esercitazione è possibile visualizzare le attività più comuni utilizzate per elaborare file di grandi dimensioni, eseguire query sul database e unire/unire i dati per formare un'altra tabella in memoria. Puoi scrivere questi enormi dati nel tuo database e in una coda Kafka con prestazioni estremamente elevate e a costi contenuti.
Obiettivi
- Scopri come utilizzare il flusso di dati per elaborare una grande quantità di dati
- Scopri come integrare servizi scalabili: repository di file, database e coda
Prerequisiti
-
tenant operativo Oracle Cloud: puoi creare un account Oracle Cloud gratuito con 300,00 USD per un mese per provare questa esercitazione. Consulta la sezione relativa alla creazione di un account Oracle Cloud gratuito
-
CLI OCI (Oracle Cloud Command Line Interface) installato nel computer locale: si tratta del collegamento per installare l'CLI OCI.
-
Un'applicazione Apache Spark installata nel computer locale. Esamina Sviluppare le applicazioni Oracle Cloud Infrastructure Data Flow a livello locale, eseguire la distribuzione nel cloud per comprendere come sviluppare localmente e nel flusso di dati.
Nota: questa è la pagina ufficiale da installare: Apache Spark. Esistono procedure alternative per installare Apache Spark per ogni tipo di sistema operativo (Linux/Mac OS/Windows).
-
CLI Spark Submit installato. Si tratta del collegamento per installare l'interfaccia CLI Spark Submit.
-
Maven installato nel computer locale.
-
Conoscenza dei concetti di OCI:
- Compartimenti
- Criteri IAM
- Tenancy
- OCID delle risorse
Task 1: Creare la struttura di storage degli oggetti
Lo storage degli oggetti verrà utilizzato come repository di file predefinito. Puoi usare altri tipi di repository di file, ma lo storage degli oggetti è un modo semplice e a basso costo per manipolare i file con prestazioni. In questa esercitazione, entrambe le applicazioni caricheranno un file CSV di grandi dimensioni dallo storage degli oggetti, mostrando in che modo Apache Spark è veloce ed efficace per elaborare un elevato volume di dati.
-
Crea un compartimento: i compartimenti sono importanti per organizzare e isolare le tue risorse cloud. Puoi isolare le tue risorse in base ai criteri IAM.
-
È possibile utilizzare questo collegamento per comprendere e impostare i criteri per i compartimenti: Gestione dei compartimenti
-
Crea un compartimento per ospitare tutte le risorse delle 2 applicazioni in questa esercitazione. Creare un compartimento denominato analytics.
-
Andare al menu principale di Oracle Cloud e cercare: Identity & Security, Compartimenti. Nella sezione Compartimenti, fare clic su Crea compartimento e immettere il nome.
Nota: è necessario concedere l'accesso a un gruppo di utenti e includere l'utente.
-
Fare clic su Crea compartimento per includere il compartimento.
-
-
Crea il tuo bucket nello storage degli oggetti: i bucket sono container logici per la memorizzazione degli oggetti. Tutti i file utilizzati per questa demo verranno quindi memorizzati in questo bucket.
-
Vai al menu principale di Oracle Cloud e cerca Storage e Bucket. Nella sezione Bucket selezionare il compartimento (analitica), creato in precedenza.
-
Fare clic su Crea bucket. Crea 4 bucket: applicazioni, dati, dataflow-log, wallet
-
Immettere le informazioni relative al nome bucket con questi 4 bucket e mantenere gli altri parametri con la selezione predefinita.
-
Per ogni bucket, fare clic su Crea. È possibile visualizzare i bucket creati.
-
Nota: per il bucket, consulta i criteri IAM. È necessario impostare i criteri se si desidera utilizzare questi bucket nelle applicazioni demo. Puoi consultare i concetti e impostare qui la panoramica dello storage degli oggetti e i criteri IAM.
Task 2: creare Autonomous Database
Oracle Cloud Autonomous Database è un servizio gestito per Oracle Database. Per questa esercitazione, le applicazioni si connetteranno al database tramite un wallet per motivi di sicurezza.
-
Creare un'istanza di Autonomous Database come descritto di seguito. Provisioning di Autonomous Database.
-
Nel menu principale di Oracle Cloud selezionare l'opzione Data Warehouse, selezionare Oracle Database e Autonomous Data Warehouse, selezionare l'analitica del compartimento in uso e seguire l'esercitazione per creare l'istanza del database.
-
Assegnare al nome dell'istanza i log elaborati, scegliere log come nome del database e non è necessario modificare alcun codice nelle applicazioni.
-
Immettere la password ADMIN e scaricare il file zip del wallet.
-
Dopo aver creato il database, è possibile impostare la password utente ADMIN e scaricare il file zip Wallet.
-
Salvare il file zip del wallet (
Wallet_logs.zip
) e annotare la password ADMIN, sarà necessario impostare il codice applicazione. -
Andare a Storage, Bucket. Modificare l'impostazione nel compartimento analytics e il bucket Wallet verrà visualizzato. Fare clic su di esso.
-
Per caricare il file zip del wallet, fare clic su Carica e allegare il file Wallet_logs.zip.
Nota: per accedere ad Autonomous Database, consultare i criteri IAM qui: criterio IAM per Autonomous Database
Task 3: caricare i file di esempio CSV
Per dimostrare la potenza di Apache Spark, le applicazioni leggeranno un file CSV con 1.000.000 righe. Questi dati verranno inseriti nel database Autonomous Data Warehouse con una sola riga di comando e pubblicati in streaming Kafka (Oracle Cloud Streaming). Tutte queste risorse sono scalabili e perfette per volumi di dati elevati.
-
Scaricare questi 2 collegamenti e caricarli nel bucket dati:
-
Nota:
- organizations.csv contiene solo 100 righe, solo per eseguire il test delle applicazioni sul computer locale.
- organizations1M.csv contiene 1.000.000 righe e verrà utilizzato per l'esecuzione nell'istanza di Flusso dati.
-
Dal menu principale di Oracle Cloud, vai a Storage e Bucket. Fare clic sul bucket dati e caricare i 2 file del passo precedente.
-
Carica una tabella ausiliaria nel database ADW
-
Scaricare questo file per il caricamento nel database ADW: GDP PER CAPTA COUNTRY.csv
-
Nel menu principale di Oracle Cloud selezionare Oracle Database e Autonomous Data Warehouse.
-
Fare clic sull'istanza Log elaborati per visualizzare i dettagli.
-
Fare clic su Azioni database per accedere alle utility del database.
-
Immettere le credenziali per l'utente ADMIN.
-
Fare clic sull'opzione SQL per accedere alle utility di query.
-
Fare clic su Caricamento dati.
-
Rilasciare il file GDP PER CAPTA COUNTRY.csv nel pannello della console e procedere all'importazione dei dati in una tabella.
-
L'importazione della nuova tabella denominata GDPPERCAPTA è riuscita.
Task 4: creare un vault segreto per la password ADW ADMIN
Per motivi di sicurezza, la password ADW ADMIN verrà salvata in un vault. Oracle Cloud Vault può ospitare questa password con sicurezza ed è possibile accedervi nell'applicazione mediante l'autenticazione OCI.
-
Creare il segreto in un vault come descritto nella seguente documentazione: Aggiungere la password amministratore del database al vault
-
Creare una variabile denominata PASSWORD_SECRET_OCID nelle applicazioni e immettere l'OCID.
Nota: rivedere il criterio IAM per il vault OCI qui: Criterio IAM di OCI Vault.
Task 5: Creare un servizio di streaming Kafka con Oracle Cloud
Il servizio di streaming gestito è Oracle Cloud Streaming. Puoi sviluppare applicazioni utilizzando le API Kafka e gli SDK comuni. In questa esercitazione, creerai un'istanza di streaming e ne configurerai l'esecuzione in entrambe le applicazioni per pubblicare e utilizzare un elevato volume di dati.
-
Dal menu principale di Oracle Cloud, vai a Analytics & AI, Streams.
-
Modificare il compartimento in analytics. Ogni risorsa in questa demo verrà creata in questo compartimento. Questo sistema è più sicuro e facile da controllare grazie a IAM.
-
Fare clic su Crea flusso.
-
Immettere il nome kafka_like (ad esempio) e mantenere tutti gli altri parametri con i valori predefiniti.
-
Fare clic su Crea per inizializzare l'istanza.
-
Attendere lo stato Attivo. Ora puoi usare l'istanza.
Nota: nel processo di creazione dello streaming è possibile selezionare l'opzione Creazione automatica di un pool di flussi predefinito per creare automaticamente il pool predefinito.
-
Fare clic sul collegamento DefaultPool.
-
Visualizzare l'impostazione di connessione.
-
Annotare queste informazioni come saranno necessarie nel passo successivo.
Nota: rivedere i criteri IAM per lo streaming OCI qui: criterio IAM per lo streaming OCI.
Task 6: generare un TOKEN AUTH per accedere a Kafka
Puoi accedere a streaming OCI (API Kafka) e ad altre risorse in Oracle Cloud con un token di autenticazione associato al tuo utente su IAM OCI. Nelle impostazioni di connessione Kafka, le stringhe di connessione SASL hanno un parametro denominato password e un valore AUTH_TOKEN come descritto nel task precedente. Per abilitare l'accesso allo streaming OCI, è necessario andare all'utente nella console OCI e creare un TOKEN AUTH.
-
Dal menu principale di Oracle Cloud, andare a Identity & Security, Users.
Nota: tenere presente che l'utente necessario creare AUTH TOKEN è l'utente configurato con l'interfaccia CLI OCI e tutta la configurazione dei criteri IAM per le risorse create fino ad ora. Le risorse sono le seguenti:
- Oracle Cloud Autonomous Data Warehouse
- Streaming di Oracle Cloud
- Memorizzazione oggetti Oracle
- Flusso di dati Oracle
-
Fare clic sul nome utente per visualizzare i dettagli.
-
Fare clic sull'opzione Autorizza token nella parte sinistra della console e fare clic su Genera token.
Nota: il token verrà generato solo in questo passo e non sarà visibile dopo il completamento del passo. Quindi, copiare il valore e salvarlo. Se si perde il valore del token, è necessario generare di nuovo il token di autenticazione.
Task 7: Impostazione delle applicazioni Demo
Questa esercitazione contiene 2 applicazioni demo per le quali verranno impostate le informazioni richieste:
-
Java-CSV-DB: questa applicazione leggerà 1.000.000 righe di un file CSV (organizations1M.csv) ed eseguirà alcuni processi standard in uno scenario comune per l'integrazione con un database (Oracle Cloud Autonomous Data Warehouse) e uno streaming Kafka (Oracle Cloud Streaming).
La demo mostra come un set di dati CSV può essere unito a una tabella ausiliaria nel database e ai tipi di incrocio di tabelle che generano un terzo set di dati in memoria. Dopo l'esecuzione, il data set verrà inserito in ADW e pubblicato in streaming Kafka.
-
JavaConsumeKafka: questa applicazione ripeterà alcuni passi della prima applicazione solo per eseguire la CPU e la memoria per un elevato volume di elaborazione. La differenza è che la prima applicazione viene pubblicata allo streaming Kafka, mentre questa applicazione viene letta dallo streaming.
-
Scaricare le applicazioni utilizzando i seguenti collegamenti:
-
Trovare i dettagli riportati di seguito nella console di Oracle Cloud.
-
Spazio di nomi tenancy
-
Segreto password
-
Impostazioni connessione streaming
-
Token di autenticazione
-
-
Aprire i file zip scaricati (
Java-CSV-DB.zip
eJavaConsumeKafka.zip
). Passare alla cartella /src/main/java/example e trovare il codice Example.java.-
Queste sono le variabili che devono essere modificate insieme ai valori delle risorse della tenancy.
NOME VARIABILE NOME RISORSA TITOLO INFORMAZIONI SPAZIO DEI NOMI SPAZIO DI NOMI TENANCY TENANCY OBJECT_STORAGE_NAMESPACE SPAZIO DI NOMI TENANCY TENANCY PASSWORD_SECRET_OCID PASSWORD_SECRET_OCID OCID streamPoolId Impostazioni connessione streaming ocid1.streampool.oc1.iad..... valore nella stringa di connessione SASL kafkaUsername Impostazioni connessione streaming valore del nome utente all'interno di " " nella stringa di connessione SASL kafkaPassword Token di autenticazione Il valore viene visualizzato solo nella fase di creazione
-
Nota: tutte le risorse create per questa esercitazione si trovano nell'area US-ASHBURN-1. Controllare l'area desiderata. Se si modifica l'area, è necessario modificare i seguenti dettagli nei 2 file di codice:
Example.java: modificare la variabile bootstrapServers, sostituendo "us-ashburn-1" con la nuova area.
OboTokenClientConfigurator.java: modificare la variabile CANONICAL_REGION_NAME con la nuova area.
Task 8: Comprendere il codice Java
Questa esercitazione è stata creata in Java e questo codice può essere applicato anche a Python. Il tutorial è diviso in 2 parti:
-
Applicazione 1 per la pubblicazione in Kafka Streaming
-
Applicazione 2 per l'utilizzo da Kafka Streaming
Per dimostrare l'efficienza e la scalabilità, sono state sviluppate entrambe le applicazioni per mostrare alcune possibilità in un caso d'uso comune di un processo di integrazione. Pertanto, il codice di entrambe le applicazioni mostra gli esempi riportati di seguito.
-
Leggi un file CSV con 1.000.000 righe
-
Preparare il wallet ADW per connettersi tramite una connessione JDBC
-
Inserire 1.000.000 righe di dati CSV nel database ADW
-
Eseguire una frase SQL per eseguire una query su una tabella ADW
-
Esegui una frase SQL per JOIN un set di dati CSV con una tabella di set di dati ADW
-
Eseguire un loop del set di dati CSV per dimostrare un'iterazione con i dati
-
Operazioni con lo streaming Kafka
Questa demo può essere eseguita nel computer locale e può essere distribuita nell'istanza di Flusso dati per essere eseguita come esecuzione di un job.
Nota: per il job Flusso dati e il computer locale, utilizzare la configurazione CLI OCI per accedere alle risorse OCI. Dal lato Flusso dati, tutto è preconfigurato, quindi non è necessario modificare i parametri. Installare l'interfaccia CLI OCI sul lato computer locale e configurare il tenant, l'utente e la chiave privata per accedere alle risorse OCI.
Vediamo il codice Example.java
nelle sezioni:
-
Inizializzazione di Apache Spark: questa parte del codice rappresenta l'inizializzazione di Spark. La maggior parte delle configurazioni per eseguire i processi di esecuzione vengono configurate automaticamente, pertanto è molto semplice utilizzare il motore Spark.
-
Leggi file di grandi dimensioni in molti formati: il motore e l'SDK Apache Spark consentono un caricamento rapido e la scrittura dei formati di file. Un volume elevato può essere manipolato in pochi secondi e addirittura in millisecondi. In questo modo è possibile eseguire operazioni di unione, FILTER e JOIN in memoria e manipolare origini dati diverse.
-
Leggi il segreto vault ADW: questa parte del codice accede al vault per ottenere il segreto per l'istanza ADW in uso.
-
Leggere il file
Wallet.zip
per connettersi tramite JDBC: questa sezione mostra come caricare il fileWallet.zip
dallo storage degli oggetti e configurare il driver JDBC. -
Inserire 1.000.000 righe di set di dati CSV nel database ADW: dal set di dati CSV è possibile eseguire l'inserimento in batch direttamente nel database ADW. Apache Spark può ottimizzare l'esecuzione sfruttando tutta la potenza dei computer in cluster, le CPU e la memoria per ottenere le migliori prestazioni.
-
Trasformazione dei dati: immagina di caricare molti file CSV, eseguire query su alcune tabelle nel database in set di dati, JOIN, filtrare, eliminare le colonne, calcolare e molte altre operazioni in poche righe di codice, in una frazione di tempo ed eseguire un'operazione di scrittura in qualsiasi formato. In questo esempio è stato creato un nuovo set di dati denominato oracleDF2 da un set di dati CSV e un set di dati del database ADW.
-
Itera con un set di dati in un loop: questo è un esempio di iterazione del loop sul set di dati CSV (1.000.000 righe). L'oggetto riga contiene il mapping della struttura dei campi CSV. È possibile ottenere i dati di ogni riga ed eseguire chiamate API e molte altre operazioni.
-
Operazioni Kafka: questa è la preparazione per la connessione allo streaming OCI utilizzando l'API Kafka.
Nota: Oracle Cloud Streaming è compatibile con la maggior parte delle API Kafka.
-
Dopo aver configurato i parametri di connessione, il codice mostra come produrre e utilizzare lo streaming.
Task 9: creare un package per l'applicazione con Maven
Prima di eseguire il job in Apache Spark, è necessario creare un package dell'applicazione con Maven. Maven è una delle utility più note per imballare le applicazioni con librerie e plugin.
Nota:
È possibile eseguire un test rapido modificando il file CSV con un altro con solo 100 righe. A tale scopo, è sufficiente individuare il codice seguente nel file Example.java: stringa statica privata INPUT_PATH = "oci://data@" + OBJECT_STORAGE_NAMESPACE + "/organizations1M.csv";
Sostituire
organizations1M.csv
conorganizations.csv
e l'esecuzione sarà molto più rapida.
-
Package Java-CSV-DB
-
Andare alla cartella /Java-CSV-DB ed eseguire questo comando:
mvn package
-
È possibile vedere Maven per l'avvio del packaging.
-
Se tutto è corretto, è possibile visualizzare il messaggio Operazione riuscita.
-
Per eseguire il test dell'applicazione nel computer Apache Spark locale, eseguire questo comando:
spark-submit --class example.Example target/loadadw-1.0-SNAPSHOT.jar
-
-
Package JavaConsumeKafka
-
Accedere alla cartella /JavaConsumeKafka ed eseguire questo comando:
mvn package
-
È possibile vedere Maven per l'avvio del packaging.
-
Se tutto è corretto, è possibile visualizzare il messaggio Operazione riuscita.
-
Per eseguire il test dell'applicazione nel computer Apache Spark locale, eseguire questo comando:
spark-submit --class example.Example target/loadkafka-1.0-SNAPSHOT.jar
-
Task 10: verificare l'esecuzione
-
Conferma inserimenti ADW
-
Andare al menu principale di Oracle Cloud, selezionare Oracle Database e Autonomous Data Warehouse.
-
Fare clic sull'istanza Log elaborati per visualizzare i dettagli.
-
Fare clic su Azioni database per accedere alle utility del database.
-
Immettere le credenziali per l'utente ADMIN.
-
Fare clic sull'opzione SQL per accedere alle utility di query.
-
Eseguire una query per visualizzare le 1.000.000 di righe nella tabella.
-
-
Conferma log di esecuzione
-
I log di esecuzione possono essere visualizzati se il job è in grado di accedere e caricare i data set.
-
Task 11: creare ed eseguire un job di Flusso dati
Ora, con entrambe le applicazioni eseguite correttamente nel computer Apache Spark locale, puoi distribuirle nel flusso di dati di Oracle Cloud nella tua tenancy.
-
Dal menu principale di Oracle Cloud, andare a Analytics & AI e Flusso di dati.
-
Assicurarsi di selezionare il compartimento analytics prima di creare un'applicazione di flusso dati.
-
Fare clic su Crea applicazione.
-
Completare i parametri come mostrato nella seguente immagine:
-
Fare clic su Crea.
-
Dopo la creazione, fare clic sul collegamento Demo su scala per visualizzare i dettagli.
-
Fare clic su Esegui per eseguire il job.
-
Confermare i parametri e fare di nuovo clic su Esegui.
-
Visualizzare lo stato del job, attendere che lo stato venga modificato in Riuscito e che i risultati siano visibili.
Passi successivi
La prima applicazione pubblica i dati in Kafka Streaming. La seconda applicazione utilizza questi dati da Kafka.
-
Creare un'altra applicazione di flusso dati utilizzando gli stessi passi quando è stata creata la prima applicazione di flusso dati.
-
È necessario modificare il nome dell'applicazione e il package da loadadw-1.0-SNAPSHOT.jar a loadkafka-1.0-SNAPSHOT.jar.
-
È possibile conservare gli altri parametri in modo che siano uguali alla prima applicazione Flusso dati ed eseguire l'esecuzione del job.
Collegamenti correlati
-
Sviluppa applicazioni Oracle Cloud Infrastructure Data Flow a livello locale, distribuisci sul cloud
-
Aggiungere la password dell'amministratore del database al vault
Approvazioni
- Autore - Cristiano Hoshikawa ( Solution Engineer LAD A-Team)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Explorer di Oracle Learning.
Per la documentazione sul prodotto, visitare il sito 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.