Analizza dati da origini memorizzazione oggetti esterne mediante Oracle Cloud Infrastructure Data Flow
I dati risiedono in cloud diversi, ad esempio Amazon Web Services S3 o Azure Blob Storage, ma si desidera analizzarli da una piattaforma di analisi comune. Oracle Cloud Infrastructure Data Flow è un servizio Spark completamente gestito che consente di sviluppare ed eseguire Big Data Analytics, indipendentemente dal luogo in cui risiedono i dati, senza dover distribuire o gestire un cluster di big data.
Architettura
Questa architettura mostra il flusso di dati di Oracle Cloud Infrastructure connesso ai bucket AWS (Amazon Web Service) S3 o ai bucket Azure Blob Storage, analizzando i dati e salvando i risultati in Oracle Cloud Infrastructure Object Storage.
Per connettersi ad AWS, l'applicazione Data Flow richiede una chiave di accesso AWS e una chiave segreta. Per connettersi ad Azure, Data Flow richiede il nome account e la chiave account di Azure.
Il seguente diagramma illustra questa architettura di riferimento.
oci-dataflow-architettura-oracle.zip
L'architettura ha i seguenti componenti:
- Area
Un'area Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni, e vaste distanze possono separarle (tra paesi o addirittura continenti).
- Oracle Cloud Infrastructure Data Flow
Oracle Cloud Infrastructure Data Flow è una piattaforma senza server basata su cloud che consente di creare, modificare ed eseguire job Spark su qualsiasi scala senza la necessità di cluster, team operativo o conoscenze Spark altamente specializzate. Durante il runtime, il flusso di dati ottiene l'origine dell'applicazione, crea la connessione, recupera i dati, li elabora e scrive l'output in Oracle Cloud Infrastructure Object Storage.
- Memorizzazione oggetti
Lo storage degli oggetti fornisce accesso rapido a grandi quantità di dati strutturati e non strutturati di qualsiasi tipo di contenuto, inclusi backup del database, dati analitici e contenuti avanzati quali immagini e video. Puoi memorizzare e recuperare i dati in tutta sicurezza direttamente da Internet o dall'interno della piattaforma cloud. È possibile scalare lo storage senza problemi senza compromettere le prestazioni o l'affidabilità del servizio. Utilizzare lo storage standard per lo storage "hot" a cui è necessario accedere in modo rapido, immediato e frequente. Utilizzare l'archiviazione per lo storage "freddo" che viene conservato per lunghi periodi di tempo e raramente accessibile.
Suggerimenti
Utilizzare i suggerimenti riportati di seguito come punto di partenza per analizzare i dati provenienti da origini di memorizzazione oggetti esterne utilizzando Oracle Cloud Infrastructure Data Flow.
Le vostre esigenze potrebbero differire dall'architettura descritta qui.
- Posizione dati
Questa architettura è progettata per consentire agli utenti di eseguire in modo rapido e semplice il test delle applicazioni Spark utilizzando Data Flow. Dopo aver superato i test di fattibilità, consigliamo di trasferire i dati di origine in Oracle Cloud Infrastructure Object Storage per migliorare le prestazioni e ridurre i costi.
- Memorizzazione degli oggetti
Questa architettura utilizza Oracle Cloud Infrastructure Object Storage standard per memorizzare l'output elaborato in modo che altri servizi cloud possano accedere all'output per ulteriori analisi e visualizzazioni.
Considerazioni
Quando si analizzano i dati da origini di memorizzazione degli oggetti esterne utilizzando Oracle Cloud Infrastructure Data Flow, prendere in considerazione queste opzioni di distribuzione.
- Applicazione Spark
Se si dispone di un'applicazione Spark esistente in esecuzione sui dati in Amazon Web Services S3 o Azure Blob Storage, è possibile utilizzare la stessa applicazione Spark in Oracle Cloud Infrastructure Data Flow.
- Prestazioni
La lettura dei dati nei data center è intrinsecamente lenta. Questa architettura è adatta per una prova del concetto o per applicazioni che sono ad alta intensità di CPU, come i lavori di machine learning. Se la prova del concetto ha esito positivo, trasferire i dati di origine localmente in Oracle Cloud Infrastructure Object Storage prima di eseguire processi di produzione di grandi dimensioni.
- Sicurezza
Utilizzare i criteri per limitare chi può accedere alle risorse Oracle Cloud Infrastructure e in che misura.
Utilizzare Oracle Cloud Infrastructure Identity and Access Management (IAM) per assegnare privilegi a utenti e gruppi di utenti specifici per il flusso di dati ed eseguire la gestione all'interno del flusso di dati.
La cifratura è abilitata per Oracle Cloud Infrastructure Object Storage per impostazione predefinita e non può essere disattivata.
- Costo
Oracle Cloud Infrastructure Data Flow è un servizio pay-per-use, pertanto paghi solo quando si esegue l'applicazione Data Flow e non quando viene creata.
L'elaborazione di un grande volume di dati Amazon Web Services S3 può comportare costi elevati di uscita dei dati.
Distribuisci
Il codice Terraform per questa architettura di riferimento è disponibile come stack di esempio in Oracle Cloud Infrastructure Resource Manager. Questo stack Terraform di esempio distribuisce un ambiente applicativo di flusso dati OCI, insieme ai criteri IAM e ai bucket di storage degli oggetti OCI (non di storage di terze parti). By default, a demo Python Spark application will also be deployed. È inoltre possibile scaricare il codice da GitHub e personalizzarlo in base alle proprie esigenze.
- Distribuire utilizzando lo stack di esempio in Oracle Cloud Infrastructure Resource Manager:
- Fare clic su
.
Se non si è già collegati, immettere la tenancy e le credenziali utente.
- Selezionare l'area in cui distribuire lo stack.
- Seguire i prompt visualizzati e le istruzioni per creare lo stack.
- Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Piano.
- Attendere il completamento del job e rivedere il piano.
Per apportare modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Eseguire quindi di nuovo l'azione Piano.
- Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack, fare clic su Azioni Terraform e selezionare Applica.
- Fare clic su
- Distribuisci usando il codice Terraform in GitHub:
- Vai a GitHub.
- Duplicare o scaricare il repository nel computer locale.
- Seguire le istruzioni riportate nel documento
README
.
Oltre al codice Terraform fornito su GitHub, i frammenti di codice riportati di seguito illustrano come connettersi a Amazon Web Services S3 e come eseguire una query sui dati.
- Per connettersi e interrogare i dati da S3, è necessario includere i package
hadoop-aws.jar
eaws-java-sdk.jar
. È possibile fare riferimento a questi package nel filepom.xml
come riportato di seguito.<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-aws</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <version>1.7.4</version> </dependency>
- Utilizzare un codice simile a quello riportato di seguito per connettersi a Amazon Web Services S3. È necessario fornire la chiave di accesso e la chiave segreta. Nello snippet riportato di seguito, questi valori sono rappresentati rispettivamente dalle variabili
ACCESS
eSECRET
:SparkSession spark = SparkSession.builder().master("local") .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") .config("spark.hadoop.fs.s3a.access.key", ACCESS) .config("spark.hadoop.fs.s3a.secret.key", SECRET) .config("fs.s3a.connection.ssl.enabled", "false") .getOrCreate();
- Utilizzare un codice simile a quello riportato di seguito per eseguire una query sui dati utilizzando la posizione di S3 e il nome della tabella specificato.
Dataset<Row> ds = sqlContext.read().format("csv").option("header","true").load("<S3 Location>"); ds.createOrReplaceTempView("<Table Name>"); Dataset<Row> result_ds = sqlContext.sql("<SQL Query Using <Table Name>>");
Scopri di più
Scopri di più sulle caratteristiche di questa architettura.
-
Per visualizzare le informazioni sul prodotto, vedere Oracle Cloud Infrastructure Data Flow.
-
Per provare il flusso di dati, utilizzare l'esercitazione Introduzione a Oracle Cloud Infrastructure Data Flow.
- Per ulteriori informazioni su Python e su Oracle Cloud Infrastructure Data Flow, utilizza il workshop Oracle LiveLabs Sample Python Application with OCI Data Flow
-
Per ulteriori informazioni sulle classi SparkSession e Dataset mostrate nei frammenti di codice, vedere la documentazione API Java Spark.
-
Per informazioni sulle altre API supportate da Apache Spark, vedere Documentazione API Spark.
Per le linee guida generali sull'architettura di Oracle Cloud Infrastructure, vedere Framework Best practices per Oracle Cloud Infrastructure.
Log modifiche
Questo log elenca le modifiche significative:
17 agosto 2022 | Aggiunta di un diagramma scaricabile e del pulsante Distribuisci e aggiornamento del collegamento GitHub precedente. |
1 dicembre 2020 | La sezione Distribuisci ora include riferimenti a risorse aggiuntive necessarie per comunicare con AWS. |