注意:

使用 Oracle Cloud Infrastructure Data Flow 處理 Autonomous Database 和 Kafka 中的大型檔案

簡介

Oracle Cloud Infrastructure (OCI) 資料流程是完全託管的服務,可用於執行 Apache Spark TM 應用程式。資料流程用於處理大型檔案、串流處理、資料庫作業,而您可以建立大量具有非常高可擴展處理的應用程式。Apache Spark 可以調整及使用叢集機器,以最低組態平行處理工作。

您可以使用 Apache Spark 作為託管服務 (資料流程),新增許多可擴展的服務以乘上雲端處理的強大功能,此教學課程顯示如何使用:

資料流程使用 -case.png

在本教學課程中,您可以看到最常用來處理大型檔案、查詢資料庫,以及合併 / 結合資料以形成記憶體中另一個表格的活動。您可以將此大量資料寫入資料庫和 Kafka 佇列中,而且具備非常低的成本和高效能。

目標

必要條件

作業 1:建立物件儲存體結構

物件儲存將作為預設檔案儲存區域使用。您可以使用其他類型的檔案儲存區域,但物件儲存體是一種既簡單又低成本的方式,會以效能操控檔案。本教學課程中,兩應用系統都將從物件儲存體載入一個大型 CSV 檔案,其中顯示 Apache Spark 如何快速且智慧地處理大量資料。

  1. 建立區間:區間可用於組織及隔離您的雲端資源。您可以依據 IAM 原則將資源隔離。

    • 您可以使用此連結瞭解及設定區間的原則:管理區間

    • 建立一個區間以代管此教學課程中 2 個應用程式的所有資源。建立一個名為 analytics 的區間。

    • 前往 Oracle Cloud 主功能表,然後搜尋:身分識別與安全區間。在「區間」區段中,按一下建立區間並輸入名稱。

      建立 -compartment.png

      注意:您必須授予使用者群組的存取權並加入您的使用者。

    • 按一下建立區間以包含您的區間。

  2. 在物件儲存中建立儲存桶:儲存桶是儲存物件的邏輯容器,因此用於此示範的所有檔案都將儲存在此儲存桶中。

    • 前往 Oracle Cloud 主功能表,然後搜尋儲存儲存桶。在「儲存桶」區段中,選取先前建立的區間 (分析)。

      選擇 -compartment.png

    • 按一下建立儲存桶 (Create Bucket) 。建立 4 個儲存桶:應用程式、資料、資料流程日誌、公事包

      建立 -bucket.png

    • 輸入這 4 個儲存桶的儲存桶名稱資訊,然後使用預設選項維護其他參數。

    • 針對每個儲存桶,按一下建立 (Create) 。您可以查看建立的儲存桶。

      儲存桶 -dataflow.png

注意: 複查儲存桶的 IAM 原則。如果您要在示範應用程式中使用這些儲存桶,就必須設定原則。您可以在這裡檢視概念與設定物件儲存體簡介IAM 原則

作業 2:建立 Autonomous Database

Oracle Cloud Autonomous Database 是 Oracle Database 的託管服務。本教學課程基於安全理由,應用程式將透過公事包連線至資料庫。

注意:請複查此處存取 Autonomous Database 的 IAM 原則:Autonomous Database 的 IAM 原則

作業 3:上傳 CSV 範例檔案

為了示範 Apache Spark 的強大功能,應用程式會讀取 1,000,000 行的 CSV 檔案。這個資料只會插入 Autonomous Data Warehouse 資料庫中,而且會在 Kafka 串流處理 (Oracle Cloud Streaming) 上發布。所有這些資源都可擴展,非常適合大量資料使用。

您可以順利匯入新的名為 GDPPERCAPTA 的表格。

adw-table-imported.png

作業 4:為您的 ADW ADMIN 密碼建立 Secret Vault

基於安全理由,ADW ADMIN 密碼將會儲存在 Vault 上。Oracle Cloud Vault 可以透過安全性代管此密碼,而且可以使用 OCI 認證在您的應用程式上存取此密碼。

注意:請從以下網址複查 OCI Vault 的 IAM 原則: OCI Vault IAM 原則

工作 5:使用 Oracle Cloud Streaming 服務建立 Kafka 串流

Oracle Cloud Streaming 是一種類似託管串流服務的 Kafka。您可以使用 Kafka API 和通用 SDK 來開發應用系統。在本教學課程中,您將建立 Streaming 的執行處理,並將其設定為在兩個應用程式中執行,以發布及使用大量資料。

  1. 從 Oracle Cloud 主功能表,前往分析與 AI串流

  2. 將區間變更為分析。此示範中的每個資源都將在此區間上建立。這是更安全且更容易控制的 IAM。

  3. 按一下建立串流

    建立 -stream.png

  4. 將名稱輸入為 kafka_like (例如),您也可以使用預設值維護所有其他參數。

    儲存 - 建立 -stream.png

  5. 按一下建立 (Create) 以初始化執行處理。

  6. 等待作用中狀態。現在,您可以使用此執行處理。

    注意:在串流建立處理作業中,您可以選取自動建立預設串流集區選項,以自動建立預設集區。

  7. 按一下 DefaultPool 連結。

    default-pool-option.png

  8. 檢視連線設定。

    stream-conn-settings.png

    kafka-conn.png

  9. 將此資訊加註,如下一步將需要。

注意:請在此處複查 OCI Streaming 的 IAM 原則: OCI Streaming 的 IAM 原則

作業 6:產生 AUTH TOKEN 以存取 Kafka

您可以使用與 OCI IAM 上使用者關聯的認證權杖,存取 Oracle Cloud 中的 OCI 串流處理 (Kafka API) 和其他資源。在 Kafka 連線設定值中,SASL 連線字串有一個名為 password 的參數和 AUTH_TOKEN 的值,如上一個作業所述。若要啟用 OCI 串流的存取,您必須前往 OCI 主控台的使用者並建立 AUTH TOKEN。

  1. 從 Oracle Cloud 主功能表,前往身分識別與安全性使用者

    注意:請記住,建立 AUTH TOKEN 的使用者是使用您的 OCI CLI 設定的使用者,而且到目前為止所建立資源的所有 IAM 原則組態設定。資源為:

    • Oracle Cloud Autonomous Data Warehouse
    • Oracle Cloud 串流
    • Oracle Object Storage
    • Oracle 資料流程
  2. 按一下您的使用者名稱即可檢視詳細資訊。

    auth_token_create.png

  3. 按一下主控台左側的 Auth 權杖選項,然後按一下產生權杖

    注意:此步驟只會產生記號,在您完成此步驟之後將不會顯示。因此,請複製值並加以儲存。如果遺失權杖值,就必須重新產生認證權杖。

    auth_token_1.png

    auth_token_2.png

作業 7:設定示範應用程式

本教學課程有兩個示範應用程式,我們將為其設定所需的資訊:

  1. 使用下列連結下載應用程式:

  2. 在 Oracle Cloud 主控台中找到下列詳細資訊:

    • 租用戶命名空間

      租用戶 -namespace-1.png

      租用戶命名空間 -detail.png

    • 密碼加密密碼

      保存庫 -adw.png

      vault-adw-detail.png

      密語 -adw.png

    • 串流處理連線設定值

      kafka-conn.png

    • 認證記號

      auth_token_create.png

      auth_token_2.png

  3. 開啟下載的 zip 檔案 (Java-CSV-DB.zipJavaConsumeKafka.zip)。移至 /src/main/java/example 資料夾,找出 Example.java 代碼。

    代碼 -variables.png

    • 以下是需要使用您的租用戶資源值變更的變數。

      變數名稱 資源名稱 資訊標題
      命名空間 租用戶命名空間 租用戶
      OBJECT_STORAGE_NAMESPACE 租用戶命名空間 租用戶
      PASSWORD_SECRET_OCID PASSWORD_SECRET_OCID OCID
      streamPoolId 串流處理連線設定值 ocid1.streampool.oc1.iad..... SASL 連線字串中的值
      kafkaUsername 串流處理連線設定值 SASL 連線字串中 " " 的 usename 值
      kafkaPassword 認證記號 值只會顯示在建立步驟中

注意:為此教學課程建立的所有資源皆位於美國 - ASHBURN-1 區域中。存入您要使用的區域。如果您變更區域,則需要變更 2 個程式碼檔案中的下列詳細資訊:

作業 8:瞭解 Java 程式碼

此教學課程使用 Java 建立,而且此程式碼也可移植到 Python。教學分為兩部分:

為了證明效率與擴展性,兩應用系統都開發起來,在整合流程的常見使用案例中會顯示一些可能性。因此,這兩個應用程式的程式碼會顯示下列範例:

此示範可以在您的本機機器中執行,而且可以部署至資料流程執行處理,以作為工作執行。

注意: 對於「資料流程」工作和本機機器,請使用 OCI CLI 組態來存取 OCI 資源。在「資料流程」端,所有項目都已預先設定,因此不需要變更參數。在您的本機機器端,安裝 OCI CLI 並設定租用戶、使用者和私密金鑰以存取您的 OCI 資源。

讓我們在區段中顯示 Example.java 程式碼:

作業 9:將您的應用程式以 Maven 封裝

在 Apache Spark 執行工作之前,必須使用 Maven 封裝您的應用程式。Maven 是其中一種最已知的公用程式,可封裝具有程式庫和外掛程式的應用程式。

注意:

  1. Java-CSV-DB 套裝程式

    1. 前往 /Java-CSV-DB 資料夾並執行此命令:

      mvn package

    2. 您可以看到 Maven 開始封裝。

      天文 -package-1a.png

    3. 如果一切都正確,您可以看到成功 (Success) 訊息。

      天文 -success-1a.png

    4. 若要測試本機 Apache Spark 機器中的應用程式,請執行此命令:

      spark-submit --class example.Example target/loadadw-1.0-SNAPSHOT.jar

  2. JavaConsumeKafka 套裝軟體

    1. 移至 /JavaConsumeKafka 資料夾並執行此指令:

      mvn package

    2. 您可以看到 Maven 開始封裝。

      天文 -package-2a.png

    3. 如果一切都正確,您可以看到成功 (Success) 訊息。

      天文 -success-2a.png

    4. 若要在您的本機 Apache Spark 機器中測試應用程式,請執行此命令:

      spark-submit --class example.Example target/loadkafka-1.0-SNAPSHOT.jar

作業 10:驗證執行

  1. 確認 ADW 插入

    1. 前往 Oracle Cloud 主功能表,選取 Oracle DatabaseAutonomous Data Warehouse

    2. 按一下已處理的日誌執行處理即可檢視詳細資訊。

    3. 按一下資料庫動作 (Database Actions) 移至資料庫公用程式。

      廣告 -actions.png

    4. 輸入 ADMIN 使用者的證明資料。

      廣告 -login.png

    5. 按一下 SQL 選項即可移至「查詢公用程式」。

      adw-select-sql.png

    6. 執行查詢以查看表格中的 1,000,000 行。

      ADW 查詢 -organizations.png

  2. 確認執行日誌

    • 如果工作可以存取和載入資料集,您可以在執行日誌中查看。

      spark-csv-results.png

作業 11:建立並執行資料流程工作

現在,由於這兩個應用程式都順利在您的本機 Apache Spark 機器中執行,因此您可以將它們部署到您租用戶的 Oracle Cloud Data Flow 中。

  1. 從 Oracle Cloud 主功能表,前往分析與 AI資料流程

  2. 請務必先選取您的分析區間,再建立資料流程應用程式。

  3. 按一下建立應用程式

    create-dataflow-app.png

  4. 完成以下影像所示的參數:

    資料流程 -app.png

  5. 按一下建立

  6. 建立之後,按一下調整示範規模連結以檢視詳細資訊。

  7. 按一下執行以執行工作。

  8. 確認參數,然後再按一下執行 (Run)

    dataflow-run-job.png

  9. 檢視工作的狀態,等待「狀態」變更為成功 (Succeeded) ,您可以查看結果。

    dataflow-run-status.png

    dataflow-run-success.png

接下來的步驟

第一個應用程式會將資料發布到 Kafka 串流。第二個應用程式會使用 Kafka 的這項資料。

確認

其他學習資源

探索 docs.oracle.com/learn 的其他實驗室,或者存取更多 Oracle Learning YouTube 頻道上的免費學習內容。此外,請瀏覽 education.oracle.com/learning-explorer 以成為 Oracle Learning 檔案總管。

如需產品文件,請造訪 Oracle Help Center