今天,我们将提供一项新功能 AWS胶水 资料目录 允许为 AWS Glue 表生成列级统计信息。 这些统计数据现在与基于成本的优化器(CBO)集成 亚马逊雅典娜 和亚马逊 红移光谱,从而提高查询性能并节省潜在成本。
数据湖旨在以低成本存储大量原始、非结构化或半结构化数据,并且组织在多个部门和团队之间共享这些数据集。 对这些大型数据集的查询会读取大量数据,并且可以对多个数据集执行复杂的联接操作。 在与客户交谈时,我们了解到数据湖性能的挑战性方面之一是如何优化这些分析查询以更快地执行。
数据湖性能优化对于具有多个联接的查询尤其重要,这也是基于成本的优化器最有帮助的地方。 为了使 CBO 发挥作用,需要收集列统计信息并根据数据的变化进行更新。 我们正在推出生成列级统计信息的功能,例如 AWS Glue 表上的 Parquet、ORC、JSON、Amazon ION、CSV、XML 等文件的不同数量、空值数量、最大值和最小值。 通过此次发布,客户现在拥有集成的端到端体验,其中收集 Glue 表的统计信息并将其存储在 AWS Glue 目录中,并提供给分析服务以改进查询规划和执行。
使用这些统计数据,基于成本的优化器可以改进查询运行计划并提高在 Amazon Athena 和 Amazon Redshift Spectrum 中运行的查询的性能。 例如,CBO 可以使用列统计信息(例如不同值的数量和空值的数量)来改进行预测。 行预测是查询计划阶段中某个步骤将返回的表中的行数。 行预测越准确,查询执行步骤就越高效。 这会带来更快的查询执行速度并可能降低成本。 CBO 可以采用的一些具体优化包括基于每个表和列的可用统计信息的连接重新排序和聚合下推。
对于使用的客户 数据网格 AWS湖形成 权限,来自不同数据生产者的表被编目在集中治理帐户中。 当他们生成集中目录上的表的统计信息并与消费者共享这些表时,对消费者帐户中这些表的查询将自动看到查询性能的改进。 在本文中,我们将演示 AWS Glue 数据目录为示例表生成列统计信息的功能。
解决方案概述
为了证明此功能的有效性,我们采用存储在 Amazon Simple Storage Service 中的行业标准 TPC-DS 3 TB 数据集 (Amazon S3) 公共存储桶。 我们将通过在 Amazon Athena 和 Amazon Redshift Spectrum 中运行查询来比较生成表的列统计信息之前和之后的查询性能。 我们提供了在本文中使用的查询,并且我们鼓励您按照以下详细信息所示的工作流程尝试您自己的查询。
该工作流程由以下高级步骤组成:
- 对 Amazon S3 存储桶进行编目: 利用 AWS Glue Crawler 爬取指定的 Amazon S3 存储桶,提取元数据并将其无缝存储在 AWS Glue 数据目录中。 我们将使用 Amazon Athena 和 Amazon Redshift Spectrum 查询这些表。
- 生成列统计信息: 利用 AWS Glue 数据目录的增强功能为爬网数据生成全面的列统计信息,从而提供对数据集的宝贵见解。
- 使用 Amazon Athena 和 Amazon Redshift Spectrum 进行查询: 利用 Amazon Athena 和 Amazon Redshift Spectrum 对数据集执行查询,评估列统计信息对查询性能的影响。
下图说明了解决方案体系结构。
演练
为了实施该解决方案,我们完成以下步骤:
- 设置资源 AWS CloudFormation.
- 在公共 Amazon S3 存储桶上运行 AWS Glue Crawler 以列出 3TB TPC-DS 数据集。
- 在 Amazon Athena 和 Amazon Redshift 上运行查询并记下查询持续时间
- 生成 AWS Glue 数据目录表的统计信息
- 在 Amazon Athena 和 Amazon Redshift 上运行查询并将查询持续时间与之前的运行进行比较
- 可选:使用 AWS Lambda 和 Amazon EventBridge Scheduler 安排 AWS Glue 列统计作业
使用 AWS CloudFormation 设置资源
这篇文章包括一个 AWS CloudFormation 用于快速设置的模板。 您可以查看并自定义它以满足您的需求。 该模板生成以下资源:
- 亚马逊虚拟私有云(亚马逊VPC)、公有子网、私有子网和路由表。
- Amazon Redshift Serverless 工作组和命名空间。
- AWS Glue 爬网程序,用于爬网公共 Amazon S3 存储桶并为 TPC-DS 数据集的 Glue 数据目录创建表
- AWS Glue 目录数据库和表
- 用于存储 athena 结果的 Amazon S3 存储桶。
- AWS身份和访问管理 (AWS IAM) 用户和策略。
- AWS Lambda 和 Amazon Event Bridge 调度程序用于调度 AWS Glue 列统计信息
要启动 AWS CloudFormation 堆栈,请完成以下步骤:
备注:AWS Glue 数据目录表是使用公共存储桶生成的 s3://blogpost-sparkoneks-us-east-1/blog/BLOG_TPCDS-TEST-3T-partitioned/
,托管在 us-east-1
地区。 如果您打算在不同区域部署此 AWS CloudFormation 模板,则需要将数据复制到相应区域或在部署的区域内共享数据,以便可以从 Amazon Redshift 访问该数据。
- 登录到 AWS管理控制台 作为 AWS 身份和访问管理 (AWS IAM) 管理员。
- 选择启动堆栈以部署 AWS CloudFormation 模板。
- 下一页.
- 在下一页上,将所有选项保留为默认或根据您的要求进行适当的更改选择 下一页.
- 查看最后一页上的详细信息并选择 我承认AWS CloudFormation可能会创建IAM资源.
- 创建.
此堆栈可能需要大约 10 分钟才能完成,之后您可以在 AWS CloudFormation 控制台上查看已部署的堆栈。
运行由 AWS CloudFormation 堆栈创建的 AWS Glue 爬网程序
要运行爬网程序,请完成以下步骤:
- 在 AWS Glue 控制台上 AWS Glue 控制台,在导航窗格中的“数据目录”下选择“爬网程序”。
- 找到并运行两个爬虫
tpcdsdb-without-stats
和tpcdsdb-with-stats
。 可能需要几分钟才能完成。
一旦爬虫成功完成,它将创建两个相同的数据库 tpcdsdbnostats
和 tpcdsdbwithstats
。 中的表 tpcdsdbnostats
将没有统计数据,我们将使用它们作为参考。 我们生成表的统计信息 tpcdsdbwithstats
。 请验证您是否拥有 AWS Glue 控制台中的这两个数据库和基础表。 tpcdsdbnostats 数据库如下所示。 目前这些表上还没有生成任何统计信息。
使用 Amazon Athena 在无统计表上运行提供的查询
要在 Amazon Athena 中对没有统计信息的表运行查询,请完成以下步骤:
使用 Amazon Redshift Spectrum 在无统计表上运行提供的查询
要在 Amazon Redshift 中运行查询,请完成以下步骤:
- 从以下位置下载 Amazon Redshift 查询 相关信息.
- 点击 Redshift 查询编辑器 v2,执行 Redshift 查询没有统计信息的表 下载查询的部分。
- 运行查询并记下每个查询的查询执行情况。
生成 AWS Glue Catalog 表的统计信息
要生成 AWS Glue Catalog 表的统计信息,请完成以下步骤:
- 导航到 AWS Glue 控制台 并选择下面的数据库 数据目录。
- 点击
tpcdsdbwithstats
数据库,它将列出所有可用的表。 - 选择任何这些表(例如,
call_center
). - 在MyCAD中点击 软件更新 列统计 – 新 标签并选择 生成统计数据。
- 保留默认选项。 在下面 选择列 保持 表(所有列) 及以下 行采样选项 保持 所有行, 在下面 IAM 角色选择 AWSGluestats 博客 并选择 生成统计数据。
您将能够看到统计数据生成运行的状态,如下图所示:
生成 AWS Glue Catalog 表的统计信息后,您应该能够查看该表的详细列统计信息:
重复步骤 2-5 为所有必要的表生成统计数据,例如 catalog_sales
, catalog_returns
, warehouse
, item
, date_dim
, store_sales
, customer
, customer_address
, web_sales
, time_dim
, ship_mode
, web_site
, web_returns
. 或者,您也可以按照“安排 AWS Glue 统计运行”本博客末尾附近的部分生成所有表的统计信息。 完成后,评估每个查询的查询性能。
使用 Athena 控制台在统计表上运行提供的查询
- 在亚马逊 雅典娜控制台,执行 Athena 查询具有统计信息的表 下载查询的部分。
- 运行并记下每个查询的查询执行情况。
在对表进行查询的示例运行中,我们观察到了下表中的查询执行时间。 我们看到查询性能明显提高,提高了 13% 到 55%。
Athena 查询时间改进
TPC-DS 3T 查询 | 无胶统计(秒) | 带胶水统计数据(秒) | 性能改进 (%) |
查询2 | 33.62 | 15.17 | 55% |
查询4 | 132.11 | 72.94 | 45% |
查询14 | 134.77 | 91.48 | 32% |
查询28 | 55.99 | 39.36 | 30% |
查询38 | 29.32 | 25.58 | 13% |
使用 Amazon Redshift Spectrum 对统计表运行提供的查询
- 在亚马逊 Redshift 查询编辑器 v2,执行 Redshift 查询具有统计信息的表 下载查询的部分。
- 运行查询并记下每个查询的查询执行情况。
在对表进行查询的示例运行中,我们观察到了下表中的查询执行时间。 我们看到查询性能明显提高,提高了 13% 到 89%。
Amazon Redshift Spectrum 查询时间改进
TPC-DS 3T 查询 | 无胶统计(秒) | 带胶水统计数据(秒) | 性能改进 (%) |
查询40 | 124.156 | 13.12 | 89% |
查询60 | 29.52 | 16.97 | 42% |
查询66 | 18.914 | 16.39 | 13% |
查询95 | 308.806 | 200 | 35% |
查询99 | 20.064 | 16 | 20% |
安排 AWS Glue 统计数据运行
在本文的这一部分中,我们将指导您使用以下步骤完成安排 AWS Glue 列统计数据运行的步骤: AWS Lambda 和 亚马逊EventBridge 调度程序。 为了简化此流程,创建了 AWS Lambda 函数和 Amazon EventBridge 调度程序作为 CloudFormation 堆栈部署的一部分。
- AWS Lambda 函数设置:
首先,我们利用 AWS Lambda 函数来触发 AWS Glue 列统计作业的执行。 AWS Lambda 函数调用 start_column_statistics_task_run 通过 boto3(适用于 Python 的 AWS 开发工具包)库的 API。 这为自动化列统计更新奠定了基础。
让我们探索一下 AWS Lambda 函数:
-
- 去 AWS Glue Lambda 控制台.
- 选择 主要工作内容 并找到
GlueTableStatisticsFunctionv1
. - 为了更清楚地了解 AWS Lambda 函数,我们建议查看中的代码 代码 部分并检查下的环境变量 配置.
- Amazon EventBridge 调度程序配置
下一步涉及使用 Amazon 安排 AWS Lambda 函数调用 EventBridge 调度程序。 调度程序配置为每天在特定时间(在本例中为晚上 08:00)触发 AWS Lambda 函数。 这可确保 AWS Glue 列统计作业定期且可预测地运行。
现在,我们来探讨一下如何更新时间表:
打扫干净
为避免对您的 AWS 账户产生不必要的费用,请删除 AWS 资源:
- 以用于创建 AWS CloudFormation 堆栈的 AWS IAM 管理员身份登录 AWS CloudFormation 控制台。
- 删除您创建的 AWS CloudFormation 堆栈。
结论
在这篇文章中,我们向您展示了如何使用 AWS Glue数据目录 生成列级统计信息 AWS胶水 表。 这些统计数据现在与基于成本的优化器集成 亚马逊雅典娜 和亚马逊 红移光谱,从而提高查询性能并节省潜在成本。 参考 配套文档 支持跨各种 AWS 分析服务的 Glue 目录统计。
如果您有任何问题或建议,请在评论部分提交。
作者简介
桑迪普·阿德万卡尔 是 AWS 的高级技术产品经理。 他在加利福尼亚湾区工作,与全球客户合作,将业务和技术要求转化为产品,使客户能够改进他们管理、保护和访问数据的方式。
纳夫尼特舒克拉 担任 AWS 专家解决方案架构师,专注于分析。 他对帮助客户从数据中发现有价值的见解充满热情。 通过他的专业知识,他构建了创新的解决方案,使企业能够做出明智的、数据驱动的选择。 值得注意的是,Navnit Shukla 是《AWS 上的数据整理》一书的杰出作者。 可以通过以下方式联系他 LinkedIn.
- :是
- :在哪里
- $UP
- 08
- 1
- 10
- 100
- 13
- 264
- 30
- a
- Able
- ACCESS
- 访问管理
- 无障碍
- 完成
- 账号管理
- 账户
- 精准的
- 承认
- 横过
- 后
- 所有类型
- 允许
- Amazon
- 亚马逊雅典娜
- 亚马逊网络服务
- 量
- an
- 分析
- 分析
- 和
- 任何
- API
- 适当
- 架构
- 保健
- 国家 / 地区
- 围绕
- AS
- 方面
- 评估
- 协助
- At
- 作者
- 自动
- 自动化
- 可使用
- 避免
- AWS
- AWS CloudFormation
- AWS胶水
- AWS Lambda
- 基于
- 基础
- 海湾
- BE
- before
- 开始
- 如下。
- 博客
- 书
- 提升
- 桥
- 商业
- 企业
- by
- 加州
- CAN
- 能力
- 能力
- 案件
- 检索目录
- 集中
- 一定
- 挑战
- 更改
- 收费
- 选择
- 清除
- 更清晰
- 客户
- 云端技术
- 码
- 柱
- 列
- 注释
- 比较
- 完成
- 完成对
- 复杂
- 全面
- 配置
- 由
- 安慰
- 消费者
- 消费者
- 相应
- 价格
- 节约成本
- 成本
- 履带
- 创建信息图
- 创建
- 创造
- 合作伙伴
- 定制
- 每天
- data
- 数据湖
- 数据驱动
- 数据库
- 数据库
- 数据集
- 默认
- 演示
- 部门
- 部署
- 部署
- 部署
- 指定
- 设计
- 详细
- 详情
- 不同
- 发现
- 不同
- 完成
- 向下
- 为期
- ,我们将参加
- e
- 每
- 编辑
- 效用
- 高效
- 或
- 授权
- enable
- 鼓励
- 结束
- 端至端
- 提高
- 增强
- 确保
- 热情
- 环境
- 特别
- 醚(ETH)
- 评估
- 活动
- 检查
- 例子
- 执行
- 执行
- 体验
- 专门知识
- 探索
- 快
- 少数
- 档
- 最后
- 专注焦点
- 遵循
- 以下
- 针对
- 止
- 功能
- 生成
- 产生
- 产生
- 发电
- 代
- 地球
- 治理
- 基础
- 指南
- 有
- he
- 帮助
- 高
- 他的
- 托管
- 创新中心
- How To
- HTML
- HTTP
- HTTPS
- IAM
- 相同
- 身分
- 身份和访问管理
- if
- 说明
- 影响力故事
- 实施
- 重要
- 改善
- 改善
- 改进
- 改善
- 提高
- in
- 包括
- 包括
- 通知
- 创新
- 可行的洞见
- 集成
- 打算
- 成
- 所调用
- 涉及
- IT
- 工作
- 工作机会
- 加入
- 加入
- JPG
- JSON
- 保持
- 湖泊
- 湖泊
- 大
- 发射
- 发射
- 信息
- 知道
- Level
- 自学资料库
- 喜欢
- 清单
- 看
- 看起来像
- 低
- 制成
- 使
- 制作
- 管理
- 颠覆性技术
- 经理
- 最大
- 可能..
- 元数据
- 可能
- 分钟
- 分钟
- 更多
- 更高效
- 最先进的
- 多
- 旅游导航
- 近
- 必要
- 需求
- 需要
- 全新
- 下页
- 没有
- 特别是
- 注意
- 现在
- 数
- 观察
- of
- on
- 一旦
- 一
- 运营
- 优化
- 优化
- 附加选项
- or
- 秩序
- 组织
- 我们的
- 输出
- 己
- 页
- 面包
- 部分
- 为
- 演出
- 性能
- 权限
- 规划行程
- 计划
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 请
- pm
- 政策
- 拥有
- 帖子
- 潜力
- 可能
- 可预见
- 预测
- 预测
- 以前
- 私立
- 过程
- 生产者
- 产品
- 产品经理
- 核心产品
- 提供
- 优
- 国家
- 蟒蛇
- 查询
- 有疑问吗?
- 快速
- 范围
- 原
- 达到
- 阅读
- 建议
- 减少
- 参考
- 参考
- 地区
- 定期
- 需求
- 岗位要求
- 资源
- 导致
- 导致
- 检讨
- 回顾
- 角色
- 路线
- 行
- 运行
- 运行
- 运行
- 储
- 锯
- 始你
- 调度
- SDK
- 无缝
- 证券交易委员会
- 部分
- 安全
- 看到
- 段
- 选择
- 前辈
- 无服务器
- 服务
- 服务
- 特色服务
- 套数
- 格局
- Share
- 应该
- 显示
- 如图
- 简易
- 方案,
- 解决方案
- 一些
- 专家
- 具体的
- 光谱
- SQL
- 堆
- 阶段
- 统计
- 统计
- Status
- 步
- 步骤
- 存储
- 商店
- 存储
- 精简
- 强烈
- 提交
- 子网
- 子网
- 顺利
- 这样
- 如下
- SUPPORT
- 表
- 采取
- 说
- 队
- 文案
- 模板
- 这
- 其
- 他们
- 那里。
- 从而
- 博曼
- 他们
- Free Introduction
- 那些
- 通过
- 次
- 标题
- 至
- 翻译
- 触发
- 尝试
- 二
- 下
- 相关
- 理解
- 无用
- 更新
- 更新
- 使用
- 用过的
- 用户
- 运用
- 利用
- 利用
- 有价值
- 价值观
- 各个
- 广阔
- 确认
- 查看
- 在线会议
- we
- 卷筒纸
- Web服务
- 为
- ,尤其是
- 这
- 将
- 中
- 也完全不需要
- 工作
- 工作流程
- 工作组
- 合作
- 将
- XML
- 雅姆
- 您
- 您一站式解决方案
- 和风网