Implemente o Oracle Modern Data Platform para Relatórios e Previsão de Negócios

Esta seção descreve como provisionar serviços do OCI, implementar o caso de uso, visualizar dados e criar previsões.

Provisionar Serviços do OCI

Vamos analisar as principais etapas para provisionar recursos para uma demonstração simples desse caso de uso.

  1. Crie um Bucket do OCI Object Storage.
    Para obter mais informações, consulte Criando um Bucket.
  2. Provisione o Oracle Big Data Service e o Autonomous Data Warehouse.

Implemente o Caso de Uso do Oracle Modern Data Platform

Antes de entrar nos detalhes da implementação, vejamos o fluxo geral.

  1. Os dados brutos residirão no OCI Object Storage.
  2. O Spark executado nativamente no Oracle Big Data Service lerá dados do OCI Object Storage. Ele limpará, transformará e anonimizará dados e, finalmente, persistirá dados no Autonomous Data Warehouse.
  3. Os usuários utilizarão o Oracle Analytics Cloud para visualizar dados e fazer previsões.


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

Observação:

O fluxo de dados escolhido é um exemplo simplista. É esperado que os casos de uso de negócios reais sejam mais envolvidos.

A seção a seguir descreve como fazer upload de dados de amostra, configurar o OCI Object Storage, o Oracle Big Data Service e chamar um job de escala simples do Spark para transformar dados e mover dados para o Autonomous Data Warehouse

  1. Obtenha dados de amostra e faça upload para o bucket do OCI Object Storage que você criou. Os dados usados para a implementação de demonstração nesta solução são dados de vendas de séries temporais baixados do Kaggle. Cada registro nesse conjunto de dados tem os seguintes campos:
    1. Id da Ordem
    2. Nome do produto
    3. Quantidade Pedida
    4. Preço Venda
    5. Order Date
    6. Endereço de compra
    Para obter mais informações sobre os dados de amostra, consulte o link Alternar: Dados de Vendas de Amostra na seção Explorar Mais.
  2. Configurar acesso ao OCI Object Storage: O cluster do Oracle Big Data Service requer acesso ao bucket do Object Storage para criar tabelas hive externas.
    Para obter detalhes da implementação, siga as etapas deste documento: Usando chaves de API do serviço Object Storage.
  3. Faça log-in no Oracle Big Data Service e chame o Hive. Crie uma tabela externa com base no bucket do Object Storage que tenha dados de vendas para nosso exemplo.
    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 se você pode consultar dados usando a tabela externa acima.
     select * from sales_obj_store limit 20;
  5. Configurar o acesso do Oracle Big Data Service ao Autonomous Data Warehouse: Fazer download do arquivo de wallet do Autonomous Data Warehouse, navegar até o cluster do Autonomous Data Warehouse, clicar em Conexão com o banco de dados e fazer download do arquivo de wallet. Armazene a wallet em um diretório no cluster do Oracle Big Data Service.
  6. Faça download do driver JDBC da Oracle e dos arquivos jar relacionados no cluster do Oracle Big Data Service. É possível fazer download dos drivers neste link: Downloads de drivers JDBC do Oracle Database e Jars Companion. Informe esses jars ao chamar seu job do Spark.
  7. Chame um job de dimensionamento simples do Spark para transformar dados e mover dados para o Autonomous Data Warehouse.
    1. Este job faz uma transformação simples para converter o campo de string em um campo de timestamp.
    2. Esse job também torna os dados anônimos removendo o endereço completo do cliente e extrai o CEP dele.
    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()
Quando o job de transformação de dados terminar, confirme se você pode ver os dados no Autonomous Data Warehouse.