前言
在數據驅動決策的時代,企業正面臨着兩大核心挑戰:如何打破數據孤島實現跨平台協作,以及如何在複雜技術棧中保持治理一致性。這些挑戰直接影響着企業從數據中獲取價值的能力和速度。
Databricks作為領先的數據分析和機器學習平台,已經幫助眾多企業實現了大規模數據處理和分析。與此同時,許多企業在亞馬遜雲科技雲上構建了完整的業務系統和機器學習工作流。如何讓這兩個強大的生態系統無縫協作,成為了釋放數據價值的關鍵所在。
本文提出的解決方案:通過SageMaker Unified Studio與Databricks Unity Catalog的深度集成,企業既能充分利用Databricks強大的數據分析能力,又能與亞馬遜雲科技上現有的業務系統深度融合,真正實現數據價值的最大化。這不是簡單的技術對接,而是一種全新的數據協作範式。
本文將以真實業務場景為錨點,深度解析兩大平台的協同價值:
1.技術融合性 – 零摩擦的數據訪問
通過SageMaker Unified Studio中的託管JupyterLab環境,藉助EMR Serverless的強大計算能力,直接訪問Databricks Unity Catalog中的受治理數據。這種架構徹底消除了傳統ETL的冗餘,讓數據科學家能夠實時訪問最新的業務數據,顯著提升模型開發效率。
2.治理穿透力 – 企業級安全合規保障
在新一代SageMaker工作流中無縫繼承Databricks預設的數據血緣追蹤、細粒度訪問控制和完整審計策略。這意味着企業無需重複構建治理體系,即可確保跨平台的數據安全性和合規性,大幅降低治理成本和風險。
實戰導向的技術指南
我們不僅會深入剖析架構設計的核心要點,更重要的是分享在實際項目落地中積累的寶貴經驗和避坑指南:
關鍵技術挑戰與解決方案:
- 跨平台安全訪問:如何在保證數據安全的前提下實現平台間的身份認證和授權
- 混合雲網絡配置:企業混合雲環境下的網絡連通性最佳實踐
- 性能優化策略:大規模數據查詢的性能調優技巧
- 生產級部署考量:從POC到生產環境的平滑過渡路徑
通過本文,您將獲得一份經過實踐驗證的完整集成方案,幫助您的團隊快速構建一個安全、高效、可擴展的跨平台數據科學工作流。
架構解析
此架構旨在整合 Amazon SageMaker Notebook和Databricks Unity Catalog 的功能,以實現高效的數據處理、機器學習模型開發以及跨平台的數據共享和協作。
亞馬遜雲科技 Side
SageMaker Unified Studio: 作為亞馬遜雲科技的核心組件之一,Sagemaker Unified Studio為數據科學家和開發者提供了一個集成的開發環境,用於構建、訓練和部署機器學習模型。它支持多種編程語言和框架,並且可以無縫地與亞馬遜雲科技其他服務進行集成。
EMR Studio Notebook: EMR Studio Notebook是Amazon EMR的一部分,它允許用户在雲端運行交互式數據分析任務。通過EMR Studio Notebook,用户可以利用Apache Spark等大數據處理框架來處理大規模數據集。
Databricks Side
Open API: Databricks提供了豐富的API接口,使得外部系統能夠與其進行通信和數據交換。這些API包括但不限於REST API,它們允許用户執行各種操作,如創建和管理集羣、運行作業、查詢數據等。
Unity Catalog: Databricks的 Unity Catalog是一個元數據管理解決方案,它幫助組織管理和治理其數據資產。通過 Unity Catalog,用户可以定義和應用細粒度的數據訪問控制策略,確保數據的安全性和合規性。
Delta Lake: Delta Lake是Databricks推出的一個開源存儲層,它提供了ACID事務、統一的數據治理和高性能的數據處理能力。Delta Lake可以存儲結構化和半結構化的數據,並支持實時分析和批處理等多種工作負載。
Databricks 數據共享方式
Databricks提供了多種數據共享的方式,下面是一個列表,我們可以根據自己的需求來進行選擇.
本案例中我們使用 Unity Catalog Open APIs 來實現 Databricks 和 SageMaker Unified Studio的數據共享, 下面我們將逐步帶大家完成所有的配置.
Databricks 側配置
- 首先我們需要開啓Databricks的Catalog External Access, 配置步驟如下.
Enable External data access
- 配置Databricks用户可以在外部訪問Catalog的權限,使用以下示例語句.
GRANT EXTERNAL USE SCHEMA ON SCHEMA <catalog_name>.<schema_name> TO `xxxxx@xx.com`
- 配置對用Databricks 用户Personal Access Token,點擊用户Settings 選項
一定要記錄下來生成好的access token,它只能被記錄一次,至此我們在 Databricks上配置就可以了.
Sagemaker Unified Studio 配置
在 Amazon SageMaker Unified Studio 中,域是用於連接您的資產、用户及其項目的組織實體。域代表組織內業務線 (LOB) 或業務領域的獨特邊界,這些業務領域可以管理自己的數據,包括自己的數據資產、自己的數據或業務術語定義,並可能有自己的治理標準。管理員創建域並與用户或組共享 URL。首次開始使用 Amazon SageMaker Unified Studio 時,首先要創建域以及域中存在的所有核心組件。
設置 Amazon SageMaker 統一工作室域
- 要開始創建域,請在 Amazon SageMaker 控制枱上點擊 創建統一工作室域按鈕。
- 選擇快速設置功能,在 快速設置功能的設置頁面上,修改域名。在虛擬私有云(VPC) 中請選擇有私有子網存在的VPC,選擇三個不同AZ的私有子網,私有子網必須配置 Nat Gateway,否則會影響後續功能使用。其他保持默認值。
- Amazon SageMaker Unified Studio 域默認支持 IAM 用户身份驗證。在此輸入IAM Identity Center中用户電子郵箱地址。
- 創建成功後通過url或者“打開統一工作室”按鈕登陸Amazon SageMaker Unified Studio。點擊後選擇 SSO 方式登陸。輸入在IAM 身份中心設置的用户名和密碼。
創建項目
- 登陸後點擊創建項目,在 Amazon SageMaker Unified Studio 中,通過項目彙集人員、數據和工具,使數據用户羣體能夠協作解決特定的業務用例。
- 修改項目名稱,選擇合適的項目配置文件。項目配置文件是用於創建項目的配置藍圖的集合。藍圖定義了項目成員在處理 Amazon SageMaker 目錄中的數據時可以使用哪些亞馬遜雲科技工具和服務。這裏選擇的是所有功能,選擇後點擊繼續。
- 可以按需更改日誌保留期等配置,由於在此場景下已經禁用了glue catalog,可以忽略lakehouse database中的glue database name更改,這裏保持默認設置。點擊繼續。跳轉到下一頁後再選擇 創建項目。創建成功後,您將被重定向到項目主頁。
- 下一步我們來添加EMR Serverless 計算資源。進入項目後,在左側概覽下選擇compute,點擊Data processing,點擊 add compute。
- 您可以選擇連接到現有計算資源。如果您為創建資源,可以選擇Create new compute resources,點擊 next
- 關於計算資源種類,我們選擇EMR Serverless , 點擊 next, 修改compute name,其他保持默認值,點擊 add compute
項目角色權限配置
最後我們還需要為項目角色添加權限,使其可以訪問Databricks存儲在S3的數據。
- 我們先在左側概覽下選擇Project overview,在Project details找到Porject role arn,從 datazone_user字段開始複製
- 進入IAM服務控台頁面,點擊左側角色,搜索複製的project role,點擊查詢結果查看角色詳情。
- 為項目角色創建內聯策略。輸入以下策略,將amzn-s3-demo-bucket替換成您的存儲桶名稱
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3AdditionalObjectPermissions",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:GetObject*",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::<amzn-s3-demo-bucket>",
"arn:aws:s3:::<amzn-s3-demo-bucket>/*"
]
}
]
}
至此我們在Sagemaker Unified Studio上的開發環境已經Ready了.
EMR Serverless 配置
下面我們需要修改 EMR Serverless Application 的配置, 為了保證後面我們在 Sagemaker Unified Studio 中的配置一致,我們需要修改Application的 Application configuration 和 Additional configurations. 修改的內容如下
- Application configuration
{
"runtimeConfiguration": [
{
"classification": "spark-defaults",
"properties": {
"spark.jars": "/usr/share/aws/delta/lib/delta-spark.jar,/usr/share/aws/delta/lib/delta-storage.jar",
"spark.jars.packages": "io.unitycatalog:unitycatalog-spark_2.12:0.2.0",
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.defaultCatalog": "<databricks uc>", # 此處修改為上面databricks中grant的UC
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<databricks uc>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<databricks uc>.uri": "https://<databricks workspace url>/api/2.1/unity-catalog"
}
}
]
}
- Disable Glue Catalog
Sagemaker Unified Studio JupyterLab配置
下面我們開始配置Sagemaker Unified Studio → JupyterLab, 如下圖所示
在我們創建Sagemaker Unified Studio的時候,會默認選上Glue Catalog作為Catalog的默認選項,如何我們想在Notebook內使用Databricks Unified Catalog, 我們需要覆蓋原有Glue Catalog配置信息,注意下面的catalog信息.
%%configure -n <EMR serverless application> -f
{
"conf": {
"spark.jars": "/usr/share/aws/delta/lib/delta-spark.jar,/usr/share/aws/delta/lib/delta-storage.jar",
"spark.jars.packages": "io.unitycatalog:unitycatalog-spark_2.12:0.2.0",
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.defaultCatalog": "<databricks uc>",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<databricks uc>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<databricks uc>.uri": "https://<databricks workspace url>/api/2.1/unity-catalog",
"spark.sql.catalog.<databricks uc>.token": "<databricks uc token>"
}
}
創建Spark session, 下面步驟中一定要注意Compute的信息
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("EMR Serverless and Databricks Unity Catalog Demo") \
.getOrCreate()
驗證當前的 Spark Context Configuration
# Verify the configuration
essential_configs = [
'spark.jars.packages', 'spark.executor.instances', 'spark.cores',
'spark.driver.cores', 'spark.executor.cores', 'spark.memory',
'spark.driver.memory', 'spark.executor.memory', 'spark.sql.catalog',
'spark.sql.defaultCatalog', 'spark.master', 'spark.sql.extensions'
]
for item in spark.sparkContext.getConf().getAll():
if any(config in item[0] for config in essential_configs):
print(item)
如果想使用emr serverless計算資源,請在每個單元格上方進行選擇,左側選擇pyspark,右側選擇創建好的emr serverless資源
查詢當前Spark中的catalog List
# Try to use Unity Catalog
spark.sql("SHOW CATALOGS").show()
可以看到此時已經有 sean2 的catalog.
下面我們查詢該catalog下的schema數據.
spark.sql("select * from sean2.myorder.sample_orders limit 1").show()
此時可以看到我們已經可以查詢到數據了.
總結與展望
方案價值回顧
通過本文介紹的集成方案,我們成功打通了亞馬遜雲科技新一代SageMaker與Databricks兩大平台的數據通道,實現了真正意義上的統一數據湖倉架構。這不僅是技術層面的集成,更是企業數據戰略的重要佈局。
關鍵收益總結
- 直接收益:
- 開發效率提升:消除重複的ETL開發工作
- 數據延遲降低:從批處理ETL到實時查詢的轉變
- 治理成本降低:統一的權限管理和審計體系
- 資源利用率提升:EMR Serverless的彈性計算能力
- 戰略價值:
- 打破組織壁壘:讓數據工程師和數據科學家在各自熟悉的平台上協同工作
- 加速AI落地:從數據洞察到模型部署的端到端流程優化
- 降低合規風險:統一的數據治理框架確保合規性
- 提升創新能力:釋放團隊精力專注於業務價值創造
- 適用場景
本方案特別適合以下場景:
- 已有Databricks數據平台,需要擴展ML能力的企業
- 需要在亞馬遜雲科技生態系統中利用Databricks數據資產的團隊
- 對數據治理有嚴格要求的遊戲、金融、醫療等行業
- 追求成本優化的中大型數據團隊
未來展望
隨着Unity Catalog生態的不斷完善和亞馬遜雲科技對開放標準的持續支持,我們預見:
- 更深度的集成:期待看到新一代SageMaker與Databricks的直接集成,互為數據的生產者與消費者。在數據發現,可讀可寫和數據治理方面更加無縫
- 性能優化:通過緩存、預計算等技術進一步提升查詢性能
- 智能化治理:基於ML的自動化數據分類和權限推薦
- 多雲擴展:將這種集成模式擴展到其他雲平台
參考文檔
https://community.databricks.com/t5/technical-blog/how-to-acc...
https://aws.amazon.com/blogs/big-data/run-interactive-workloa...
*前述特定亞馬遜雲科技生成式人工智能相關的服務目前在亞馬遜雲科技海外區域可用。亞馬遜雲科技中國區域相關雲服務由西雲數據和光環新網運營,具體信息以中國區域官網為準。
本篇作者