写点什么

新一代 SageMaker+Databricks 统一目录:机器学习与数据分析工作流打通方案

前言

在数据驱动决策的时代,企业正面临着两大核心挑战:如何打破数据孤岛实现跨平台协作,以及如何在复杂技术栈中保持治理一致性。这些挑战直接影响着企业从数据中获取价值的能力和速度。

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 侧配置

1、首先我们需要开启 Databricks 的 Catalog External Access, 配置步骤如下.


Enable External data access

2、配置 Databricks 用户可以在外部访问 Catalog 的权限,使用以下示例语句.

GRANT EXTERNAL USE SCHEMA ON SCHEMA <catalog_name>.<schema_name> TO `xxxxx@xx.com`

3、配置对用 Databricks 用户 Personal Access Token,点击用户 Settings 选项




一定要记录下来生成好的 access token,它只能被记录一次,至此我们在 Databricks 上配置就可以了.

Sagemaker Unified Studio 配置

在 Amazon SageMaker Unified Studio 中,域是用于连接您的资产、用户及其项目的组织实体。域代表组织内业务线 (LOB) 或业务领域的独特边界,这些业务领域可以管理自己的数据,包括自己的数据资产、自己的数据或业务术语定义,并可能有自己的治理标准。管理员创建域并与用户或组共享 URL。首次开始使用 Amazon SageMaker Unified Studio 时,首先要创建域以及域中存在的所有核心组件。

设置 Amazon SageMaker 统一工作室域

1、要开始创建域,请在 Amazon SageMaker 控制台上点击 创建统一工作室域按钮。

2、选择快速设置功能,在 快速设置功能的设置页面上,修改域名。在虚拟私有云(VPC) 中请选择有私有子网存在的 VPC,选择三个不同 AZ 的私有子网,私有子网必须配置 Nat Gateway,否则会影响后续功能使用。其他保持默认值。


3、Amazon SageMaker Unified Studio 域默认支持 IAM 用户身份验证。在此输入 IAM Identity Center 中用户电子邮箱地址。


4、创建成功后通过 url 或者“打开统一工作室”按钮登陆 Amazon SageMaker Unified Studio。点击后选择 SSO 方式登陆。输入在 IAM 身份中心设置的用户名和密码。


创建项目

1、登陆后点击创建项目,在 Amazon SageMaker Unified Studio 中,通过项目汇集人员、数据和工具,使数据用户群体能够协作解决特定的业务用例。

2、修改项目名称,选择合适的项目配置文件。项目配置文件是用于创建项目的配置蓝图的集合。蓝图定义了项目成员在处理 Amazon SageMaker 目录中的数据时可以使用哪些亚马逊云科技工具和服务。这里选择的是所有功能,选择后点击继续。

3、可以按需更改日志保留期等配置,由于在此场景下已经禁用了 glue catalog,可以忽略 lakehouse database 中的 glue database name 更改,这里保持默认设置。点击继续。跳转到下一页后再选择 创建项目。创建成功后,您将被重定向到项目主页。

4、下一步我们来添加 EMR Serverless 计算资源。进入项目后,在左侧概览下选择 compute,点击 Data processing,点击 add compute

5、您可以选择连接到现有计算资源。如果您为创建资源,可以选择 Create new compute resources,点击 next

6、关于计算资源种类,我们选择 EMR Serverless , 点击 next, 修改 compute name,其他保持默认值,点击 add compute


项目角色权限配置

最后我们还需要为项目角色添加权限,使其可以访问 Databricks 存储在 S3 的数据。

1、我们先在左侧概览下选择 Project overview,在 Project details 找到 Porject role arn,从 datazone_user 字段开始复制

2、进入 IAM 服务控台页面,点击左侧角色,搜索复制的 project role,点击查询结果查看角色详情。

3、为项目角色创建内联策略。输入以下策略,将 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. 修改的内容如下

  1. 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"            }        }    ]}
复制代码


  1. 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 configurationessential_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 Catalogspark.sql("SHOW CATALOGS").show()
复制代码


可以看到此时已经有 sean2 的 catalog.

下面我们查询该 catalog 下的 schema 数据.

spark.sql("select * from sean2.myorder.sample_orders limit 1").show()

此时可以看到我们已经可以查询到数据了.

总结与展望

方案价值回顾

通过本文介绍的集成方案,我们成功打通了亚马逊云科技新一代 SageMaker 与 Databricks 两大平台的数据通道,实现了真正意义上的统一数据湖仓架构。这不仅是技术层面的集成,更是企业数据战略的重要布局。

关键收益总结

  1. 直接收益:

  • 开发效率提升:消除重复的 ETL 开发工作

  • 数据延迟降低:从批处理 ETL 到实时查询的转变

  • 治理成本降低:统一的权限管理和审计体系

  • 资源利用率提升:EMR Serverless 的弹性计算能力

  1. 战略价值:

  • 打破组织壁垒:让数据工程师和数据科学家在各自熟悉的平台上协同工作

  • 加速 AI 落地:从数据洞察到模型部署的端到端流程优化

  • 降低合规风险:统一的数据治理框架确保合规性

  • 提升创新能力:释放团队精力专注于业务价值创造

  1. 适用场景

本方案特别适合以下场景:

  • 已有 Databricks 数据平台,需要扩展 ML 能力的企业

  • 需要在亚马逊云科技生态系统中利用 Databricks 数据资产的团队

  • 对数据治理有严格要求的游戏、金融、医疗等行业

  • 追求成本优化的中大型数据团队

未来展望

随着 Unity Catalog 生态的不断完善和亚马逊云科技对开放标准的持续支持,我们预见:

  1. 更深度的集成:期待看到新一代 SageMaker 与 Databricks 的直接集成,互为数据的生产者与消费者。在数据发现,可读可写和数据治理方面更加无缝

  2. 性能优化:通过缓存、预计算等技术进一步提升查询性能

  3. 智能化治理:基于 ML 的自动化数据分类和权限推荐

  4. 多云扩展:将这种集成模式扩展到其他云平台

参考文档

https://community.databricks.com/t5/technical-blog/how-to-access-data-in-databricks-from-amazon-sagemaker-notebooks/ba-p/83638

https://aws.amazon.com/blogs/big-data/run-interactive-workloads-on-amazon-emr-serverless-from-amazon-emr-studio/

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者


用户头像

还未添加个人签名 2019-09-17 加入

进入亚马逊云科技开发者网站,请锁定 https://dev.amazoncloud.cn 帮助开发者学习成长、交流,链接全球资源,助力开发者成功。

评论

发布
暂无评论
新一代SageMaker+Databricks统一目录:机器学习与数据分析工作流打通方案_人工智能_亚马逊云科技 (Amazon Web Services)_InfoQ写作社区