使用 Oracle Cloud Infrastructure Data Flow 分析外部物件儲存來源的資料
您的資料位於不同的雲端,例如 Amazon Web Services S3 或 Azure Blob Storage,但您想要從通用分析平台進行分析。Oracle Cloud Infrastructure Data Flow 是一項完全受管理的 Spark 服務,可讓您開發及執行大數據分析,無論資料所在的位置為何,都不需要部署或管理大數據叢集。
架構
此架構顯示連線至Amazon Web服務(AWS) S3儲存桶或Azure Blob儲存的Oracle Cloud Infrastructure資料流程、分析資料,以及將結果儲存在Oracle Cloud Infrastructure物件儲存體中。
若要連線至 AWS,資料流程應用系統需要有 AWS 存取金鑰和私密金鑰。若要連線至 Azure,資料流程需要 Azure 帳戶名稱和帳戶金鑰。
下圖說明此參考架構。
oci-dataflow-architecture-oracle.zip
架構包含下列元件:
- 區域
Oracle Cloud Infrastructure 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,而且大型距離可以區隔 (跨國家或甚至洲)。
- Oracle Cloud Infrastructure Data Flow
Oracle Cloud Infrastructure Data Flow 是一個無伺服器的雲端平台,可讓您隨時建立、編輯及執行 Spark 工作,不需要叢集、作業團隊或高度專業的 Spark 知識。在程式實際執行期間,資料流程會取得應用程式來源、建立連線、擷取資料、處理資料,以及將輸出寫入 Oracle Cloud Infrastructure Object Storage。
- 物件儲存
物件儲存可讓您快速存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及影像和影片等豐富內容。您可以安全可靠地儲存並直接從網際網路或雲端平台內擷取資料。您可以無縫擴充儲存,而不會造成效能或服務可靠性下降。針對快速、立即和經常存取的「熱」儲存體,使用標準儲存體。針對您保留長期且很少存取的「冷」儲存,使用封存儲存空間。
推薦
請使用下列建議作為使用 Oracle Cloud Infrastructure Data Flow 分析外部物件儲存來源資料的起點。
您的需求可能會與此處描述的架構不同。
- 資料位置
此架構的適用對象為使用者利用資料流程快速輕鬆地測試 Spark 應用程式。在成功進行可行性測試之後,我們建議將來源資料傳輸至 Oracle Cloud Infrastructure Object Storage ,以提升效能並降低成本。
- 物件儲存
此架構使用標準 Oracle Cloud Infrastructure Object Storage 儲存處理的輸出,以便其他雲端服務存取輸出,進行進一步的分析和顯示。
考量
使用 Oracle Cloud Infrastructure Data Flow 分析外部物件儲存來源的資料時,請考慮這些部署選項。
- Spark 應用程式
如果您已有針對 Amazon Web Services S3 或 Azure Blob 儲存體中資料執行的 Spark 應用程式,您可以在 Oracle Cloud Infrastructure Data Flow 中使用相同的 Spark 應用程式。
- 效能
跨資料中心讀取資料的速度實際上緩慢。此架構適用於概念驗證或 CPU 密集的應用程式,例如機器學習工作。如果您的概念驗證成功,請先在本機將來源資料傳輸至 Oracle Cloud Infrastructure Object Storage,再執行大型生產工作。
- 安全性
使用原則來限制誰可以存取 Oracle Cloud Infrastructure 資源以及程度。
您可以使用 Oracle Cloud Infrastructure Identity and Access Management (IAM),將資料流程和資料流程內的執行管理權限指派給特定使用者和使用者群組。
Oracle Cloud Infrastructure Object Storage 預設會啟用加密,而且無法關閉。
- 成本
Oracle Cloud Infrastructure Data Flow 是按使用付費;因此,您只需在執行資料流程應用系統時支付費用,而不是在建立時支付費用。
處理大量的 Amazon Web Services S3 資料可能會導致大量資料輸出成本。
建置
您可以在 Oracle Cloud Infrastructure Resource Manager 中使用這項參考架構的 Terraform 程式碼作為範例堆疊。此範例 Terraform 堆疊會部署 OCI 資料流程應用程式環境,以及 IAM 原則和 OCI 物件儲存的儲存桶 (非第三方儲存)。依照預設,也將部署示範 Python Spark 應用程式。您也可以從 GitHub 下載程式碼,並自訂程式碼以符合您的特定需求。
- 使用 Oracle Cloud Infrastructure Resource Manager 中的範例堆疊部署:
- 使用 GitHub 中的 Terraform 程式碼進行部署:
- 前往 GitHub 。
- 複製儲存區域或將儲存區域下載至您的本機電腦。
- 依照
README
文件中的指示進行。
除了 GitHub 上提供的 Terraform 程式碼之外,下方的程式碼片段說明如何連線至 Amazon Web Services S3 以及如何查詢資料。
- 若要連線至 S3 並從中查詢資料,您必須包括
hadoop-aws.jar
和aws-java-sdk.jar
套裝程式。您可以在pom.xml
檔案中參照這些套裝軟體,如下所示:<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-aws</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <version>1.7.4</version> </dependency>
- 使用類似以下的程式碼來連線至 Amazon Web Services S3。您必須提供存取金鑰與秘密金鑰。在下方的程式碼片段中,這些值分別由變數
ACCESS
和SECRET
表示:SparkSession spark = SparkSession.builder().master("local") .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") .config("spark.hadoop.fs.s3a.access.key", ACCESS) .config("spark.hadoop.fs.s3a.secret.key", SECRET) .config("fs.s3a.connection.ssl.enabled", "false") .getOrCreate();
- 使用類似以下的程式碼,利用您指定的 S3 位置和表格名稱來查詢資料。
Dataset<Row> ds = sqlContext.read().format("csv").option("header","true").load("<S3 Location>"); ds.createOrReplaceTempView("<Table Name>"); Dataset<Row> result_ds = sqlContext.sql("<SQL Query Using <Table Name>>");
探索更多
深入瞭解此架構的功能。
-
若要檢視產品資訊,請參閱 Oracle Cloud Infrastructure Data Flow。
-
若要提供資料流程嘗試,請使用 Oracle Cloud Infrastructure Data Flow 入門教學課程。
- 若要深入瞭解 Python 和 Oracle Cloud Infrastructure Data Flow ,請使用 Oracle LiveLabs 研討會搭配 OCI 資料流程的 Python 應用系統範例
-
若要深入瞭解程式碼片段中顯示的 SparkSession 和資料集類別,請參閱 Spark Java API 文件。
-
如需 Apache Spark 支援之其他 API 的相關資訊,請參閱 Spark API 文件。
如需一般 Oracle Cloud Infrastructure 架構準則,請參閱 Oracle Cloud Infrastructure 的最佳作法架構。