Implémenter Oracle Modern Data Platform pour le reporting et les prévisions métier

Cette section explique comment provisionner les services OCI, implémenter le cas d'utilisation, visualiser les données et créer des prévisions.

Provisionner les services OCI

Passons en revue les principales étapes de provisionnement des ressources pour une démonstration simple de ce cas d'utilisation.

  1. Créez un bucket OCI Object Storage.
    Pour plus d'informations, reportez-vous à Création d'un bucket.
  2. Provisionnez Oracle Big Data Service et Autonomous Data Warehouse.

Implémenter le cas d'utilisation d'Oracle Modern Data Platform

Avant d'entrer dans les détails de l'implémentation, examinons le flux global.

  1. Les données brutes résideront dans OCI Object Storage.
  2. Spark exécuté de manière native sur Oracle Big Data Service lit les données d'OCI Object Storage. Elle nettoiera, transformera et anonymisera les données et persistera enfin dans Autonomous Data Warehouse.
  3. Les utilisateurs utiliseront Oracle Analytics Cloud pour visualiser les données et effectuer des prévisions.


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

Remarques :

Le flux de données choisi est un exemple simpliste, les cas d'utilisation réels de l'entreprise peuvent être plus impliqués.

La section suivante explique comment télécharger des données échantillon, configurer OCI Object Storage, Oracle Big Data Service et appeler un travail Scala Spark simple pour transformer des données et déplacer des données vers Autonomous Data Warehouse.

  1. Obtenez des exemples de données et téléchargez-les vers le bucket OCI Object Storage que vous avez créé. Les données utilisées pour l'implémentation de la démonstration dans cette solution sont les données de ventes de séries temporelles téléchargées à partir de Kaggle. Chaque enregistrement de ce jeu de données comporte les champs suivants :
    1. ID commande
    2. Nom de produit
    3. Quantity Ordered
    4. Prix de vente
    5. Date de commande
    6. Adresse d'achat
    Pour plus d'informations sur les exemples de données, reportez-vous au lien Aggle : Sample Sales Data de la section Explorer plus.
  2. Configurer l'accès à OCI Object Storage : le cluster Oracle Big Data Service requiert l'accès au bucket Object Storage pour créer des tables de ruche externes.
    Pour plus de détails sur l'implémentation, suivez les étapes de ce document : Utilisation des clés d'API Object Storage.
  3. Connectez-vous à Oracle Big Data Service et appelez Hive. Créez une table externe basée sur le bucket Object Storage qui contient des données de vente pour notre exemple.
    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. Vérifiez que vous pouvez interroger les données à l'aide de la table externe ci-dessus.
     select * from sales_obj_store limit 20;
  5. Configurez l'accès Oracle Big Data Service à Autonomous Data Warehouse : téléchargez en local le fichier de portefeuille Autonomous Data Warehouse, accédez au cluster Autonomous Data Warehouse, cliquez sur Connexion à la base de données et téléchargez en local le fichier de portefeuille. Stockez le portefeuille dans un répertoire sur le cluster Oracle Big Data Service.
  6. Téléchargez le pilote JDBC Oracle et les fichiers JAR associés sur le cluster Oracle Big Data Service. Les pilotes peuvent être téléchargés à partir de ce lien : Téléchargements de pilotes JDBC et de fichiers JAR de compagnon Oracle Database. Transmettez ces fichiers JAR lors de l'appel de votre travail Spark.
  7. Appelez un travail Scala Spark simple pour transformer les données et les déplacer vers Autonomous Data Warehouse.
    1. Ce travail effectue une transformation simple pour convertir un champ de chaîne en champ d'horodatage.
    2. Ce travail rend également les données anonymes en enlevant l'adresse complète du client et en extrait le champ ZIP.
    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()
Une fois le travail de transformation de données terminé, vérifiez que vous pouvez voir les données dans Autonomous Data Warehouse.