Implementierung der Oracle Modern Data Platform für Geschäftsberichte und Prognosen

In diesem Abschnitt wird beschrieben, wie Sie OCI-Services bereitstellen, den Anwendungsfall implementieren, Daten visualisieren und Prognosen erstellen.

OCI-Services bereitstellen

Im Folgenden werden die wichtigsten Schritte zum Provisioning von Ressourcen für eine einfache Demo dieses Anwendungsfalls erläutert.

  1. Erstellen Sie einen OCI Object Storage-Bucket.
    Weitere Informationen finden Sie unter Bucket erstellen.
  2. Provisioning von Oracle Big Data Service und Autonomous Data Warehouse.

Implementieren Sie den Anwendungsfall Oracle Modern Data Platform

Bevor wir uns mit den Implementierungsdetails befassen, betrachten wir den gesamten Ablauf.

  1. Rohdaten befinden sich in OCI Object Storage.
  2. Spark, das nativ in Oracle Big Data Service ausgeführt wird, liest Daten aus OCI Object Storage. Es bereinigt, transformiert und anonymisiert Daten und persistiert Daten schließlich in Autonomous Data Warehouse.
  3. Benutzer können mit Oracle Analytics Cloud Daten visualisieren und Prognosen erstellen.


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

Hinweis:

Der gewählte Datenfluss ist ein vereinfachtes Beispiel, tatsächliche Geschäftsanwendungsfälle können mit größerer Beteiligung erwartet werden.

Im folgenden Abschnitt wird beschrieben, wie Sie Beispieldaten hochladen, OCI Object Storage und Oracle Big Data Service konfigurieren und einen einfachen Spark-Scala-Job aufrufen, um Daten zu transformieren und in Autonomous Data Warehouse zu verschieben

  1. Rufen Sie Beispieldaten ab, und laden Sie sie in den von Ihnen erstellten OCI Object Storage-Bucket hoch. Daten, die für die Demo-Implementierung in dieser Lösung verwendet werden, sind Zeitreihen-Verkaufsdaten, die von Kaggle heruntergeladen werden. Jeder Datensatz in diesem Datenset enthält die folgenden Felder:
    1. Bestell-ID
    2. Produktname
    3. Quantity Ordered
    4. VK
    5. Auftragsdatum
    6. Bestelladresse
    Weitere Informationen zu den Beispieldaten finden Sie unter dem Link Kaggle: Beispielumsatzdaten im Abschnitt Weitere Informationen.
  2. OCI Object Storage-Zugriff konfigurieren: Das Oracle Big Data Service-Cluster erfordert Zugriff auf den Object Storage-Bucket, um externe Hive-Tabellen zu erstellen.
    Implementierungsdetails finden Sie in diesem Dokument unter Object Storage-API-Schlüssel verwenden.
  3. Melden Sie sich bei Oracle Big Data Service an, und rufen Sie Hive auf. Erstellen Sie eine externe Tabelle basierend auf dem Objektspeicher-Bucket, der Vertriebsdaten für unser Beispiel enthält.
    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. Bestätigen Sie, dass Sie Daten mit der obigen externen Tabelle abfragen können.
     select * from sales_obj_store limit 20;
  5. Oracle Big Data Service-Zugriff auf Autonomous Data Warehouse konfigurieren: Laden Sie die Autonomous Data Warehouse-Wallet-Datei herunter, navigieren Sie zum Autonomous Data Warehouse-Cluster, klicken Sie auf Datenbankverbindung, und laden Sie die Wallet-Datei herunter. Speichern Sie das Wallet in einem Verzeichnis im Oracle Big Data Service-Cluster.
  6. Laden Sie den Oracle JDBC-Treiber und die zugehörigen JAR-Dateien auf das Oracle Big Data Service-Cluster herunter. Treiber können über diesen Link heruntergeladen werden: Oracle Database JDBC-Treiber und Companion Jars-Downloads. Übergeben Sie diese JAR-Dateien, wenn Sie Ihren Spark-Job aufrufen.
  7. Rufen Sie einen einfachen Spark-Scala-Job auf, um Daten zu transformieren und in Autonomous Data Warehouse zu verschieben.
    1. Dieser Job führt eine einfache Transformation durch, um das Zeichenfolgenfeld in ein Zeitstempelfeld zu konvertieren.
    2. Dieser Job anonymisiert auch die Daten, indem er die vollständige Kundenadresse entfernt und das ZIP-Feld daraus extrahiert.
    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()
Stellen Sie nach Abschluss des Datentransformationsjobs sicher, dass die Daten in Autonomous Data Warehouse angezeigt werden.