Implementa Oracle Modern Data Platform for Business Reporting and Forecasting

Questa sezione descrive come eseguire il provisioning dei servizi OCI, implementare il caso d'uso, visualizzare i dati e creare previsioni.

Esegui provisioning servizi OCI

Esaminiamo i passaggi principali per il provisioning delle risorse per una semplice demo di questo caso d'uso.

  1. Creare un bucket OCI Object Storage.
    Per ulteriori informazioni, vedere Creazione di un bucket.
  2. Esegui il provisioning di Oracle Big Data Service e Autonomous Data Warehouse.

Implementa il caso d'uso di Oracle Modern Data Platform

Prima di esaminare i dettagli dell'implementazione, esaminiamo il flusso complessivo.

  1. I dati non elaborati risiederanno in OCI Object Storage.
  2. Spark in esecuzione in modo nativo su Oracle Big Data Service leggerà i dati da OCI Object Storage. Pulisce, trasforma e rende anonimi i dati e infine rende persistenti i dati in Autonomous Data Warehouse.
  3. Gli utenti utilizzeranno Oracle Analytics Cloud per visualizzare i dati e fare previsioni.


oci-modern-data-reporting-flow-oracle.zip

Nota

Il flusso di dati scelto è un esempio semplicistico, i casi d'uso aziendali effettivi possono essere considerati più coinvolti.

La sezione seguente descrive come caricare dati di esempio, configurare OCI Object Storage, Oracle Big Data Service e richiamare un semplice job Spark scala per trasformare i dati e spostare i dati in Autonomous Data Warehouse

  1. Ottenere dati di esempio e caricarli nel bucket OCI Object Storage creato. I dati utilizzati per l'implementazione della demo in questa soluzione sono i dati di vendita delle serie temporali scaricati da Kaggle. Ogni record in questo set di dati dispone dei campi riportati di seguito.
    1. ID ordine
    2. Nome prodotto
    3. Quantity Ordered
    4. Prezzo di vendita
    5. Ordina data
    6. Indirizzo di acquisto
    Per ulteriori informazioni sui dati di esempio, vedere il collegamento Kaggle: dati di vendita di esempio nella sezione Scopri di più.
  2. Configura accesso Storage degli oggetti OCI: il cluster Oracle Big Data Service richiede l'accesso al bucket di storage degli oggetti per creare tabelle hive esterne.
    Per i dettagli sull'implementazione, attenersi alla procedura descritta in questo documento: Using Object Storage API keys.
  3. Eseguire il login a Oracle Big Data Service e richiamare Hive. Crea una tabella esterna basata sul bucket di storage degli oggetti con dati di vendita nel nostro esempio.
    create external table if not exists sales_obj_store
    (Order_ID bigint,
    Product string,
    Quantity_Ordered int,
    PriceEach double,
    Order_Date string,
    Purchase_Address string)
    row format delimited
    fields terminated by ','
    stored as TEXTFILE
    location 'oci://bucket_namej@namespace/sales_data/'
  4. Confermare che è possibile eseguire query sui dati utilizzando la tabella esterna sopra riportata.
     select * from sales_obj_store limit 20;
  5. Configurare l'accesso di Oracle Big Data Service a Autonomous Data Warehouse: scaricare il file wallet di Autonomous Data Warehouse, passare al cluster di Autonomous Data Warehouse, fare clic su Connessione al database e scaricare il file wallet. Memorizzare il wallet in una directory nel cluster Oracle Big Data Service.
  6. Scaricare il driver JDBC Oracle e i file JAR correlati nel cluster Oracle Big Data Service. I driver possono essere scaricati da questo collegamento: Oracle Database JDBC Driver and Companion Jars Downloads. Passare questi file jar quando si richiama il job Spark.
  7. Richiama un semplice lavoro Spark scala per trasformare i dati e spostare i dati in Autonomous Data Warehouse.
    1. Questo job esegue una semplice trasformazione per convertire un campo stringa in un campo indicatore orario.
    2. Questo job rende anonimi anche i dati rimuovendo l'indirizzo cliente completo ed estrae il campo ZIP da esso.
    import com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider
    
    import java.util.Properties
    
    import org.apache.spark.sql.Dataset
    import org.apache.spark.sql.Row
    import org.apache.spark.sql.SaveMode
    import org.apache.spark.sql.SparkSession
    import oracle.jdbc.OracleConnection
    
    val jdbcUrl = s"jdbc:oracle:thin:@(description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.us-ashburn-1.oraclecloud.com))(connect_data=(service_name=xxxx_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))?TNS_ADMIN=/home/xxx/wallet"
    
    val connectionProperties = new Properties()
    var options = collection.mutable.Map[String, String]()
    options += ("driver" -> "oracle.jdbc.driver.OracleDriver")
    options += ("url" -> jdbcUrl)
    options += (OracleConnection.CONNECTION_PROPERTY_USER_NAME -> "xxxx")
    options += (OracleConnection.CONNECTION_PROPERTY_PASSWORD -> "xxxxx")
    options += (OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN -> "/home/xxx/wallet")
    options += ("dbtable" -> "schema_name.sales")
    
    /* read from hive */
    val dfsales = spark.sql("select * from sales")
    
    /* transform */
    val ts = to_timestamp($"order_date", "MM/dd/yy HH:mm")
    val dfsales_orcl = dfsales.withColumn("order_date",ts)
    val dfsales_orcl_zip = dfsales_orcl.select(col("*"), substring_index(col("purchase_address"), " ", -1).as("zip"))
    val dfsales_orcl_transformed = dfsales_orcl_zip.drop("purchase_address")
    
    /* write to ADW */
    dfsales_orcl_transformed.write.format("jdbc").options(options).mode("append").save()
Al termine del processo di trasformazione dei dati, conferma di poter visualizzare i dati in Autonomous Data Warehouse.