비즈니스 보고 및 예측을 위한 Oracle Modern Data Platform 구현

이 섹션에서는 OCI 서비스 프로비저닝, 사용 사례 구현, 데이터 시각화, 예측 생성 방법을 설명합니다.

OCI 서비스 프로비전

이 사용 사례의 간단한 데모를 위해 리소스를 프로비저닝하는 주요 단계를 살펴보겠습니다.

  1. OCI 오브젝트 스토리지 버킷을 생성합니다.
    자세한 내용은 버킷 생성을 참조하십시오.
  2. Oracle Big Data ServiceAutonomous Data Warehouse를 프로비저닝합니다.

Oracle Modern Data Platform 사용 사례 구현

구현 세부정보를 살펴보기 전에 전체 플로우를 살펴보겠습니다.

  1. 원시 데이터는 OCI Object Storage에 상주합니다.
  2. Oracle Big Data Service에서 기본적으로 실행되는 Spark는 OCI Object Storage에서 데이터를 읽습니다. 데이터를 정리, 변환 및 익명화하고 마지막으로 데이터를 Autonomous Data Warehouse로 유지합니다.
  3. 사용자는 Oracle Analytics Cloud를 활용하여 데이터를 시각화하고 예측을 수행합니다.


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

주:

선택한 데이터 흐름은 단순한 예입니다. 실제 비즈니스 사용 사례는 더 많이 관련될 수 있습니다.

다음 섹션에서는 샘플 데이터를 업로드하고, OCI Object Storage, Oracle Big Data Service를 구성하고, 간단한 Spark scala 작업을 호출하여 데이터를 변환하고, 데이터를 Autonomous Data Warehouse로 이동하는 방법에 대해 설명합니다.

  1. 샘플 데이터를 가져와서 생성한 OCI Object Storage 버킷에 업로드합니다. 이 솔루션의 데모 구현에 사용되는 데이터는 Kaggle에서 다운로드한 시계열 판매 데이터입니다. 이 데이터세트의 각 레코드에는 다음 필드가 있습니다.
    1. 주문 ID
    2. 제품 이름
    3. Quantity Ordered
    4. 판매 가격
    5. 주문 날짜
    6. 구매 주소
    샘플 데이터에 대한 자세한 내용은 자세히 살펴보기 섹션의 Kaggle: Sample Sales Data 링크를 참조하십시오.
  2. OCI Object Storage 액세스 구성: Oracle Big Data Service 클러스터에서 외부 하이브 테이블을 생성하려면 오브젝트 스토리지 버킷에 액세스해야 합니다.
    구현에 대한 자세한 내용은 Object Storage API 키 사용 문서의 단계를 따르십시오.
  3. Oracle Big Data Service에 로그인하고 Hive를 호출합니다. 예제에 대한 영업 데이터가 있는 오브젝트 스토리지 버킷을 기반으로 외부 테이블을 생성합니다.
    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. 위 외부 테이블을 사용하여 데이터를 질의할 수 있는지 확인합니다.
     select * from sales_obj_store limit 20;
  5. Autonomous Data Warehouse에 대한 Oracle Big Data Service 액세스 구성: Autonomous Data Warehouse 전자 지갑 파일을 다운로드하고 Autonomous Data Warehouse 클러스터로 이동한 후 데이터베이스 접속을 누르고 전자 지갑 파일을 다운로드합니다. Oracle Big Data Service 클러스터의 디렉토리에 전자 지갑을 저장합니다.
  6. Oracle Big Data Service 클러스터에서 Oracle JDBC 드라이버 및 관련 jar 파일을 다운로드합니다. 드라이버는 Oracle Database JDBC 드라이버 및 Companion Jar 다운로드 링크에서 다운로드할 수 있습니다. Spark 작업을 호출할 때 이 jar을 전달합니다.
  7. 단순한 Spark scala 작업을 호출하여 데이터를 변환하고 Autonomous Data Warehouse로 데이터를 이동합니다.
    1. 이 작업은 문자열 필드를 시간 기록 필드로 변환하는 간단한 변환을 수행합니다.
    2. 또한 이 작업은 전체 고객 주소를 제거하여 데이터를 익명화하고 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()
데이터 변환 작업이 완료되면 Autonomous Data Warehouse에서 데이터를 볼 수 있는지 확인합니다.