Implante Oracle Modern Data Platform para la generación de informes y previsiones empresariales

En esta sección se describe cómo aprovisionar servicios de OCI, implementar el caso de uso, visualizar datos y crear previsiones.

Aprovisionamiento de servicios de OCI

Veamos los pasos principales para aprovisionar recursos para una demostración sencilla de este caso de uso.

  1. Cree un cubo de OCI Object Storage.
    Para más información, consulte Creación de un cubo.
  2. Aprovisione Oracle Big Data Service y Autonomous Data Warehouse.

Implementación del caso de uso de Oracle Modern Data Platform

Antes de entrar en los detalles de implantación, veamos el flujo general.

  1. Los datos raw residirán en OCI Object Storage.
  2. Spark que se ejecuta de forma nativa en Oracle Big Data Service leerá datos de OCI Object Storage. Limpiará, transformará y anonimizará los datos y, por último, conservará los datos en Autonomous Data Warehouse.
  3. Los usuarios utilizarán Oracle Analytics Cloud para visualizar datos y realizar previsiones.


oci-modern-data-reporting-flow-oracle.zip (en inglés)

Note:

El flujo de datos elegido es un ejemplo simplista; se puede esperar que los casos de uso de negocio reales estén más involucrados.

En la siguiente sección se describe cómo cargar datos de ejemplo, configurar OCI Object Storage, Oracle Big Data Service y llamar a un trabajo escala de Spark simple para transformar datos y mover datos a Autonomous Data Warehouse

  1. Obtenga datos de ejemplo y cárguelos en el cubo de OCI Object Storage que ha creado. Los datos utilizados para la implementación de la demostración en esta solución son los datos de ventas de series temporales descargados de Kaggle. Cada registro de este conjunto de datos tiene los siguientes campos:
    1. ID de orden
    2. Nombre del Producto
    3. Quantity Ordered
    4. Precio vta
    5. Fecha de la solicitud
    6. Dirección de compra
    Para obtener más información sobre los datos de ejemplo, consulte el enlace Kaggle: Sample Sales Data en la sección Explore More.
  2. Configurar acceso a OCI Object Storage: el cluster de Oracle Big Data Service necesita acceso al cubo de Object Storage para crear tablas de conexiones externas.
    Para obtener detalles de implantación, siga los pasos de este documento: Uso de claves de API de Object Storage.
  3. Conéctese a Oracle Big Data Service y llame a Hive. Cree una tabla externa basada en el cubo de Object Storage que tenga datos de ventas para nuestro ejemplo.
    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. Confirme que puede consultar datos mediante la tabla externa anterior.
     select * from sales_obj_store limit 20;
  5. Configurar acceso de Oracle Big Data Service a Autonomous Data Warehouse: descargue el archivo de cartera de Autonomous Data Warehouse, vaya al cluster de Autonomous Data Warehouse, haga clic en Conexión de base de datos y descargue el archivo de cartera. Almacene la cartera en un directorio del cluster de Oracle Big Data Service.
  6. Descargue el controlador JDBC de Oracle y los archivos jar relacionados en el cluster de Oracle Big Data Service. Los controladores se pueden descargar desde este enlace: Descargas de controladores JDBC y archivos jar complementarios de Oracle Database. Transfiera estos archivos jar al llamar al trabajo de Spark.
  7. Llama a un trabajo de escala de Spark simple para transformar datos y mover datos a Autonomous Data Warehouse.
    1. Este trabajo realiza una transformación sencilla para convertir el campo de cadena en un campo de registro de hora.
    2. Este trabajo también anonimiza los datos eliminando la dirección completa del cliente y extrae el campo zip de él.
    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()
Una vez finalizado el trabajo de transformación de datos, confirme que puede ver los datos en Autonomous Data Warehouse.