亚马逊Redshift 是最受欢迎的云数据仓库,每天有数以万计的客户使用它来分析 EB 级数据。 许多从业者正在大规模扩展这些 Redshift 数据集以用于机器学习 (ML) 亚马逊SageMaker,一种完全托管的 ML 服务,要求以代码方式或低代码/无代码方式离线开发功能,存储来自 Amazon Redshift 的特色数据,并在生产环境中大规模实现这一点。
在这篇文章中,我们向您展示了在 SageMaker 中大规模准备 Redshift 源数据的三个选项,包括从 Amazon Redshift 加载数据、执行特征工程以及将特征提取到 Amazon SageMaker功能商店:
如果您是 AWS Glue 用户并且希望以交互方式执行此过程,请考虑选项 A。如果您熟悉 SageMaker 并编写 Spark 代码,则选项 B 可能是您的选择。 如果你想以低代码/无代码的方式完成这个过程,你可以遵循选项C。
Amazon Redshift 使用 SQL 分析数据仓库、运营数据库和数据湖中的结构化和半结构化数据,并使用 AWS 设计的硬件和 ML 来提供任何规模的最佳性价比。
SageMaker Studio 是第一个完全集成的 ML 开发环境 (IDE)。 它提供了一个基于 Web 的可视化界面,您可以在其中执行所有 ML 开发步骤,包括准备数据以及构建、训练和部署模型。
AWS Glue 是一种无服务器数据集成服务,可以轻松发现、准备和组合数据以进行分析、ML 和应用程序开发。 AWS Glue 使您能够使用各种功能无缝收集、转换、清理和准备数据以存储在数据湖和数据管道中,包括 内置变换.
解决方案概述
下图说明了每个选项的解决方案架构。
先决条件
要继续使用本文中的示例,您需要创建所需的 AWS 资源。 为此,我们提供了一个 AWS CloudFormation 用于创建包含资源的堆栈的模板。 当您创建堆栈时,AWS 会在您的账户中创建许多资源:
- 一个 SageMaker 域,其中包括关联的 亚马逊弹性文件系统 (Amazon EFS) 卷
- 授权用户列表以及各种安全、应用程序、策略和 亚马逊虚拟私有云 (Amazon VPC) 配置
- 红移集群
- 红移秘密
- Amazon Redshift 的 AWS Glue 连接
- An AWS Lambda 设置所需资源、执行角色和策略的功能
确保您运行 CloudFormation 模板的区域中还没有两个 SageMaker Studio 域。 这是每个受支持区域中允许的最大域数。
部署CloudFormation模板
完成以下步骤以部署 CloudFormation 模板:
- 保存 CloudFormation 模板 SM-REDSHIFT-DEMO-VPC-CFN-V1.YAML 本地。
- 在AWS CloudFormation控制台上,选择 创建堆栈.
- 针对 准备模板, 选择 模板已准备就绪.
- 针对 模板来源, 选择 上载模板文件.
- 选择文件 导航到计算机上下载 CloudFormation 模板的位置并选择文件。
- 输入堆栈名称,例如
Demo-Redshift
. - 点击 配置堆栈选项 页面,将所有内容保留为默认值并选择 下一页.
- 点击 评论 页面,选择 我承认AWS CloudFormation可能会使用自定义名称创建IAM资源 并选择 创建堆栈.
您应该会看到一个新的 CloudFormation 堆栈,其名称为 Demo-Redshift
正在被创建。 等待堆栈状态变为 创建完成 (大约 7 分钟)然后继续前进。 您可以导航到堆栈的 资源 选项卡来检查创建了哪些 AWS 资源。
启动 SageMaker Studio
请完成以下步骤来启动您的 SageMaker Studio 域:
- 在SageMaker控制台上,选择 域名 在导航窗格中。
- 选择您作为 CloudFormation 堆栈一部分创建的域 (
SageMakerDemoDomain
). - 实行 和 工作室。
当您首次访问 SageMaker Studio 时,此页面可能需要 1-2 分钟加载,之后您将被重定向到 主页 标签。
下载 GitHub 存储库
完成以下步骤来下载 GitHub 存储库:
- 在 SageMaker 笔记本中, 文件 菜单中选择 全新 和 终端.
- 在终端中,输入以下命令:
您现在可以看到 amazon-sagemaker-featurestore-redshift-integration
SageMaker Studio 导航窗格中的文件夹。
使用 Spark 连接器设置批量摄取
完成以下步骤来设置批量摄取:
- 在 SageMaker Studio 中,打开笔记本 1- uploadjar.ipynb 下
amazon-sagemaker-featurestore-redshift-integration
. - 如果提示您选择内核,请选择 数据科学 作为图像和 Python的3 作为内核,然后选择 选择.
- 对于以下笔记本,请选择相同的映像和内核(AWS Glue 交互式会话笔记本 (4a) 除外)。
- 通过按运行单元格 Shift + Enter键 在每个细胞中。
当代码运行时,方括号之间会出现一个星号 (*)。 代码运行完毕后,* 将被数字替换。 此操作也适用于所有其他笔记本电脑。
设置架构并将数据加载到 Amazon Redshift
下一步是设置架构并从中加载数据 亚马逊简单存储服务 (Amazon S3) 到 Amazon Redshift。 为此,请运行笔记本 2-加载redshiftdata.ipynb.
在 SageMaker Feature Store 中创建特征存储
要创建特征存储,请运行笔记本 3-createfeaturestore.ipynb.
执行特征工程并将特征提取到 SageMaker Feature Store 中
在本节中,我们将介绍所有三个选项执行特征工程并将处理后的特征提取到 SageMaker Feature Store 中的步骤。
选项 A:将 SageMaker Studio 与无服务器 AWS Glue 交互式会话结合使用
针对选项 A 完成以下步骤:
- 在 SageMaker Studio 中,打开笔记本 4a-Glue-Int-Session.ipynb.
- 如果提示您选择内核,请选择 星火分析 2.0 作为图像和 Glue Python [PySpark 和 Ray] 作为内核,然后选择 选择.
环境准备过程可能需要一些时间才能完成。
选项 B:将 SageMaker 处理作业与 Spark 结合使用
在此选项中,我们使用带有 Spark 脚本的 SageMaker 处理作业从 Amazon Redshift 加载原始数据集,执行特征工程,并将数据提取到 SageMaker Feature Store 中。 为此,请打开笔记本 4b-处理-rs-to-fs.ipynb 在您的 SageMaker Studio 环境中。
在这里我们用 RedshiftDatasetDefinition
从 Redshift 集群检索数据集。 RedshiftDatasetDefinition
是处理作业的一种输入类型,它为从业者提供了一个简单的接口来配置 Redshift 连接相关的参数,例如标识符、数据库、表、查询字符串等。 您可以使用以下方式轻松建立 Redshift 连接 RedshiftDatasetDefinition
无需全职保持连接。 我们还使用 SageMaker Feature Store Spark 连接器库 在处理作业中连接到分布式环境中的 SageMaker Feature Store。 借助此 Spark 连接器,您可以轻松地将数据从 Spark DataFrame 提取到功能组的在线和离线存储中。 此外,此连接器还包含自动加载特征定义的功能,以帮助创建特征组。 最重要的是,该解决方案为您提供了一种原生 Spark 方式来实施从 Amazon Redshift 到 SageMaker 的端到端数据管道。 您可以在 Spark 上下文中执行任何特征工程,并在一个 Spark 项目中将最终特征提取到 SageMaker Feature Store 中。
为了使用 SageMaker Feature Store Spark 连接器,我们扩展了预构建的 SageMaker Spark 容器 sagemaker-feature-store-pyspark
安装。 在Spark脚本中,使用系统可执行命令运行 pip install
,在本地环境中安装这个库,并获取JAR文件依赖的本地路径。 在处理作业 API 中,将此路径提供给参数 submit_jars
到处理作业创建的 Spark 集群的节点。
在处理作业的 Spark 脚本中,我们首先从 Amazon S3 读取原始数据集文件,该文件临时存储从 Amazon Redshift 卸载的数据集作为介质。 然后我们以Spark的方式进行特征工程并使用 feature_store_pyspark
将数据提取到离线特征存储中。
对于处理工作,我们提供 ProcessingInput
用 redshift_dataset_definition
。 这里我们根据接口搭建一个结构体,提供Redshift连接相关的配置。 您可以使用 query_string
通过 SQL 过滤数据集并将其卸载到 Amazon S3。 请看下面的代码:
每个处理作业需要等待 6-7 分钟,包括 USER
, PLACE
及 RATING
数据集。
有关 SageMaker 处理作业的更多详细信息,请参阅 处理数据.
对于来自 Amazon Redshift 的特征处理的 SageMaker 本机解决方案,您还可以使用 特征处理 在 SageMaker Feature Store 中,它用于底层基础设施,包括配置计算环境以及创建和维护 SageMaker 管道以加载和摄取数据。 您只能关注包括转换函数、Amazon Redshift 源和 SageMaker Feature Store 接收器的特征处理器定义。 生产中的调度、作业管理和其他工作负载由 SageMaker 管理。 特征处理器管道是 SageMaker 管道,因此 标准监控机制和集成 是可用的。
选项 C:使用 SageMaker Data Wrangler
SageMaker Data Wrangler 允许您从各种数据源(包括 Amazon Redshift)导入数据,以低代码/无代码的方式来准备、转换和特征化您的数据。 完成数据准备后,您可以使用 SageMaker Data Wrangler 将要素导出到 SageMaker Feature Store。
有一些当您孩子因疼痛而呕吐的 AWS身份和访问管理 (IAM) 设置,允许 SageMaker Data Wrangler 连接到 Amazon Redshift。 首先,创建 IAM 角色(例如, redshift-s3-dw-connect
),其中包括 Amazon S3 访问策略。 对于这篇文章,我们附上了 AmazonS3FullAccess
IAM 角色的策略。 如果您对指定 S3 存储桶的访问有限制,您可以在 Amazon S3 访问策略中进行定义。 我们将 IAM 角色附加到之前创建的 Redshift 集群。 接下来,为 SageMaker 创建一个策略,通过获取其集群凭证来访问 Amazon Redshift,并将该策略附加到 SageMaker IAM 角色。 该策略类似于以下代码:
完成此设置后,SageMaker Data Wrangler 允许您查询 Amazon Redshift 并将结果输出到 S3 存储桶中。 有关连接到 Redshift 集群以及查询数据并将其从 Amazon Redshift 导入到 SageMaker Data Wrangler 的说明,请参阅 从 Amazon Redshift 导入数据.
SageMaker Data Wrangler 为常见用例提供了 300 多种预构建的数据转换供选择,例如删除重复行、插入缺失数据、一次性编码和处理时间序列数据。 您还可以在 pandas 或 PySpark 中添加自定义转换。 在我们的示例中,我们对数据应用了一些转换,例如删除列、数据类型强制和序数编码。
数据流完成后,您可以将其导出到 SageMaker Feature Store。 此时,您需要创建一个功能组:为功能组命名,选择在线和离线存储,提供用于离线存储的 S3 存储桶的名称,并提供具有 SageMaker Feature Store 访问权限的角色。 最后,您可以创建一个作业,该作业将创建一个 SageMaker 处理作业,该作业运行 SageMaker Data Wrangler 流程,将功能从 Redshift 数据源提取到您的功能组。
这是PLACE特征工程场景中的一个端到端的数据流。
使用 SageMaker Feature Store 进行模型训练和预测
要使用 SageMaker Feature store 进行模型训练和预测,请打开笔记本 5-使用特征组进行分类.ipynb.
将 Redshift 数据转换为特征并摄取到 SageMaker Feature Store 后,负责许多独立 ML 模型和用例的数据科学家团队就可以搜索和发现这些特征。 这些团队可以使用这些特征进行建模,而无需重建或重新运行特征工程管道。 功能组是独立管理和扩展的,并且可以重用并连接在一起,而不管上游数据源如何。
下一步是使用从一个或多个特征组中选择的特征来构建 ML 模型。 您可以决定将哪些功能组用于您的模型。 有两个选项可用于从功能组创建 ML 数据集,均利用 SageMaker Python SDK:
- 使用 SageMaker Feature Store DatasetBuilder API – SageMaker 功能商店
DatasetBuilder
API 允许数据科学家根据离线商店中的一个或多个特征组创建 ML 数据集。 您可以使用 API 从单个或多个特征组创建数据集,并将其输出为 CSV 文件或 pandas DataFrame。 请参阅以下示例代码:
- 使用 FeatureGroup API 中的 athena_query 函数运行 SQL 查询 – 另一种选择是使用为 FeatureGroup API 自动构建的 AWS Glue 数据目录。 FeatureGroup API 包括一个
Athena_query
创建 AthenaQuery 实例来运行用户定义的 SQL 查询字符串的函数。 然后运行 Athena 查询并将查询结果组织到 pandas DataFrame 中。 此选项允许您指定更复杂的 SQL 查询以从功能组中提取信息。 请参阅以下示例代码:
接下来,我们可以将不同特征组的查询数据合并到最终的数据集中进行模型训练和测试。 对于这篇文章,我们使用 批量转换 用于模型推理。 批量转换允许您对 Amazon S3 中的大量数据进行模型推理,其推理结果也存储在 Amazon S3 中。 有关模型训练和推理的详细信息,请参阅笔记本 5-使用特征组进行分类.ipynb.
对 Amazon Redshift 中的预测结果运行联接查询
最后,我们查询推理结果并将其与 Amazon Redshift 中的原始用户配置文件连接起来。 为此,我们使用 亚马逊红移频谱 将 Amazon S3 中的批量预测结果与原始 Redshift 数据连接起来。 详细参考笔记本运行 6-Read-Results in-Redshift.ipynb.
清理
在本节中,我们提供了清理本文中创建的资源的步骤,以避免持续产生费用。
关闭 SageMaker 应用程序
请完成以下步骤来关闭您的资源:
- 在 SageMaker Studio 中,在 文件 菜单中选择 关闭.
- 在 关机确认 对话框中,选择 全部关机 继续。
- 收到“服务器已停止”消息后,您可以关闭此选项卡。
删除应用程序
请完成以下步骤来删除您的应用程序:
- 在SageMaker控制台的导航窗格中,选择 域名.
- 点击 域名 页面,选择
SageMakerDemoDomain
. - 在域详细信息页面上的下 用户资料,选择用户
sagemakerdemouser
. - 在 应用 部分,在 操作 栏目,选择 删除应用 对于任何活动的应用程序。
- 确保 Status 专栏说 删除 对于所有应用程序。
删除与您的 SageMaker 域关联的 EFS 存储卷
在 SageMaker 控制台上找到您的 EFS 卷并将其删除。 有关说明,请参阅 在 SageMaker Studio 中管理您的 Amazon EFS 存储卷.
删除 SageMaker 的默认 S3 存储桶
删除默认的 S3 存储桶 (sagemaker-<region-code>-<acct-id>
) 对于 SageMaker 如果您未在该区域使用 SageMaker。
删除 CloudFormation 堆栈
删除您的 AWS 账户中的 CloudFormation 堆栈,以清理所有相关资源。
结论
在这篇文章中,我们演示了从 Redshift 数据仓库到 SageMaker 的端到端数据和机器学习流程。 您可以轻松使用 AWS 原生集成的专用引擎来无缝地完成数据旅程。 查看 亚马逊AWS官方博客 了解有关从现代数据仓库构建 ML 功能的更多实践。
作者简介
阿基莱什·杜贝是 AWS 的高级分析解决方案架构师,拥有二十多年使用数据库和分析产品的专业知识。 他的主要职责包括与企业客户合作设计强大的数据分析解决方案,同时提供有关各种 AWS Analytics 和 AI/ML 服务的全面技术指导。
郭仁 是 AWS 大中华区生成式 AI、分析和传统 AI/ML 领域的高级数据专家解决方案架构师。
丁雪莉 是一位高级 AI/ML 专家解决方案架构师。 她在机器学习方面拥有丰富的经验,并拥有计算机科学博士学位。 她主要与公共部门客户合作解决各种与 AI/ML 相关的业务挑战,帮助他们加快 AWS 云上的机器学习之旅。 当不帮助顾客时,她喜欢户外活动。
马克·罗伊 是 AWS 的首席机器学习架构师,帮助客户设计和构建 AI/ML 解决方案。 Mark 的工作涵盖了广泛的 ML 用例,主要关注计算机视觉、深度学习和在整个企业中扩展 ML。 他为许多行业的公司提供过帮助,包括保险、金融服务、媒体和娱乐、医疗保健、公用事业和制造业。 Mark 拥有六项 AWS 认证,包括 ML 专业认证。 在加入 AWS 之前,Mark 担任架构师、开发人员和技术领导者超过 25 年,其中 19 年从事金融服务工作。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- PlatoData.Network 垂直生成人工智能。 赋予自己力量。 访问这里。
- 柏拉图爱流。 Web3 智能。 知识放大。 访问这里。
- 柏拉图ESG。 汽车/电动汽车, 碳, 清洁科技, 能源, 环境, 太阳能, 废物管理。 访问这里。
- 柏拉图健康。 生物技术和临床试验情报。 访问这里。
- 图表Prime。 使用 ChartPrime 提升您的交易游戏。 访问这里。
- 块偏移量。 现代化环境抵消所有权。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/build-ml-features-at-scale-with-amazon-sagemaker-feature-store-using-data-from-amazon-redshift/
- :具有
- :是
- :不是
- :在哪里
- $UP
- 100
- 11
- 12
- 15%
- 19
- 23
- 25
- 7
- a
- 关于
- 以上
- 加快
- ACCESS
- 访问
- 根据
- 账号管理
- 承认
- 横过
- 操作
- 要积极。
- 活动
- 加
- 后
- AI
- AI / ML
- 所有类型
- 让
- 允许
- 允许
- 已经
- 还
- Amazon
- 亚马逊Redshift
- 亚马逊SageMaker
- 亚马逊网络服务
- an
- 分析
- 分析
- 和
- 另一个
- 任何
- API
- 出现
- 应用领域
- 应用程序开发
- 应用的
- 约
- 应用
- 架构
- 保健
- AS
- 相关
- At
- 连接
- 授权
- 自动
- 可使用
- 避免
- AWS
- AWS CloudFormation
- AWS胶水
- 基地
- BE
- before
- 作为
- 最佳
- 之间
- 都
- 建立
- 建筑物
- 商业
- by
- CAN
- 能力
- 例
- 检索目录
- 细胞
- 证书
- 认证
- 挑战
- 收费
- 查
- 中国
- 选择
- 客户
- 关闭
- 云端技术
- 簇
- 码
- 合作
- 收集
- 柱
- 结合
- 相当常见
- 公司
- 完成
- 复杂
- 全面
- 计算
- 一台
- 计算机科学
- 计算机视觉
- 确认
- 分享链接
- 地都
- 考虑
- 安慰
- 包含
- 上下文
- 继续
- 可以
- 盖
- 创建信息图
- 创建
- 创建
- 创造
- 资历
- 习俗
- 合作伙伴
- data
- 数据分析
- 资料准备
- 数据库
- 数据库
- 数据集
- 天
- 几十年
- 决定
- 深
- 深入学习
- 默认
- 定义
- 定义
- 学位
- 交付
- 证明
- 依赖
- 部署
- 部署
- 设计
- 详情
- 开发
- 开发商
- 研发支持
- 不同
- 通过各种方式找到
- 发现
- 分布
- do
- 域
- 域名
- 别
- 向下
- 下载
- 下降
- 每
- 此前
- 容易
- 易
- 效果
- 使
- 端至端
- 强制
- 工程师
- 引擎
- 输入
- 企业
- 娱乐
- 环境
- 环境中
- 建立
- 所有的
- 每天
- 一切
- 例子
- 例子
- 除
- 执行
- 体验
- 专门知识
- 出口
- 延长
- 延长
- 广泛
- 丰富的经验
- 提取
- 熟悉
- 专栏
- 精选
- 特征组
- 特征
- 文件
- 档
- 过滤
- 最后
- 终于
- 金融
- 金融服务
- 完
- (名字)
- 第一次
- 流
- 专注焦点
- 遵循
- 以下
- 针对
- 止
- ,
- 充分
- 功能
- 功能
- 功能
- 生成的
- 生成式人工智能
- 得到
- 越来越
- GitHub上
- 给
- Go
- 更大的
- 团队
- 组的
- 指导
- 处理
- 发生
- 硬件
- 有
- 有
- he
- 医疗保健
- 帮助
- 帮助
- 帮助
- 相关信息
- 他的
- 持有
- HTML
- HTTP
- HTTPS
- 识别码
- 身分
- if
- 说明
- 图片
- 实施
- 进口
- in
- 包括
- 包括
- 包含
- 独立
- 独立地
- 行业
- 信息
- 基础设施
- 输入
- 安装
- 安装
- 例
- 说明
- 保险
- 集成
- 积分
- 互动
- 兴趣
- 接口
- 成
- IT
- 它的
- 工作
- 工作机会
- 加入
- 加盟
- 加盟
- 旅程
- JPG
- 只是
- 只有一个
- 发射
- 领导者
- 学习
- 离开
- 自学资料库
- 喜欢
- 清单
- 加载
- 装载
- 本地
- 当地
- 圖書分館的位置
- LOOKS
- 机
- 机器学习
- 主要
- 维护
- 使
- 制作
- 管理
- 颠覆性技术
- 制造业
- 许多
- 标记
- 分数
- 最多
- 可能..
- 机制
- 媒体
- 中等
- 菜单
- 合并
- 的话
- 可能
- 分钟
- 失踪
- ML
- 模型
- 造型
- 模型
- 现代
- 监控
- 更多
- 最先进的
- 最受欢迎的产品
- 移动
- 多
- 姓名
- 本地人
- 导航
- 旅游导航
- 需求
- 全新
- 下页
- 节点
- 笔记本
- 现在
- 数
- 数字
- of
- 提供
- 优惠精选
- 这一点在线下监测数字化产品的影响方面尤为明显。
- on
- 一
- 正在进行
- 在线
- 仅由
- 打开
- 操作
- 附加选项
- 附加选项
- or
- 原版的
- 其他名称
- 我们的
- 输出
- 产量
- 超过
- 页
- 大熊猫
- 面包
- 参数
- 参数
- 部分
- 径
- 演出
- 执行
- 博士学位
- 管道
- 地方
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 点
- 政策
- 热门
- 帖子
- 做法
- 预测
- 准备
- Prepare
- 准备
- 当下
- 紧迫
- 小学
- 校长
- 先
- 私立
- 过程
- 处理
- 处理
- 处理器
- 生产
- 核心产品
- 简介
- 项目
- 提供
- 提供
- 优
- 国家
- 蟒蛇
- 查询
- 范围
- RAY
- 阅读
- 而不管
- 地区
- 有关
- 仁
- 更换
- 必须
- 岗位要求
- 资源
- 资源
- 提供品牌战略规划
- 限制
- 导致
- 成果
- 健壮
- 角色
- 角色
- 罗伊
- 运行
- 运行
- 运行
- sagemaker
- SageMaker管道
- 同
- 说
- 鳞片
- 缩放
- 脚本
- 调度
- 科学
- 科学家
- SDK
- 无缝
- 搜索
- 部分
- 扇形
- 保安
- 看到
- 选
- 选择
- 前辈
- 系列
- 无服务器
- 服务
- 特色服务
- 招生面试
- 集
- 设置
- 格局
- 她
- 应该
- 显示
- 关闭
- 简易
- 单
- SIX
- So
- 方案,
- 解决方案
- 一些
- 来源
- 来源
- 火花
- 专家
- 其他
- 指定
- 广场
- 堆
- 个人陈述
- Status
- 步
- 步骤
- 存储
- 商店
- 存储
- 商店
- 串
- 结构体
- 结构化
- 工作室
- 这样
- 支持
- 肯定
- 系统
- 表
- 采取
- 队
- 文案
- 专业技术
- 模板
- HAST
- 终端
- 测试
- 比
- 这
- 其
- 他们
- 然后
- 那里。
- 博曼
- Free Introduction
- 数千
- 三
- 通过
- 次
- 时间序列
- 时间戳
- 至
- 一起
- 传统
- 产品培训
- 改造
- 转型
- 转换
- 转化
- 二
- 类型
- 下
- 相关
- 上游数据
- 使用
- 用过的
- 用户
- 用户
- 使用
- 运用
- 公用事业
- 利用
- 各种
- 各个
- 版本
- 在线会议
- 愿景
- 体积
- 等待
- 想
- 是
- 方法..
- we
- 卷筒纸
- Web服务
- 基于网络的
- 井
- 为
- 什么是
- ,尤其是
- 这
- 而
- 宽
- 大范围
- 将
- 也完全不需要
- 工作
- 加工
- 合作
- 将
- 写作
- 雅姆
- 年
- 完全
- 您一站式解决方案
- 和风网