多年来,数据仓库和在数据仓库平台上执行的分析的重要性一直在稳步增长,许多企业开始依赖这些系统作为短期运营决策和长期战略规划的关键任务。 传统上,数据仓库以批量周期进行刷新,例如每月、每周或每天,以便企业可以从中获得各种见解。
许多组织意识到近实时数据摄取和高级分析开辟了新的机会。 例如,金融机构可以通过以近实时模式而非批处理模式运行异常检测程序来预测信用卡交易是否存在欺诈。
在这篇文章中,我们展示了如何 亚马逊Redshift 可以在一个平台上提供流媒体摄取和机器学习 (ML) 预测。
Amazon Redshift 是一种快速、可扩展、安全且完全托管的云数据仓库,使用标准 SQL 可以简单且经济高效地分析您的所有数据。
亚马逊红移机器学习 使数据分析师和数据库开发人员可以在 Amazon Redshift 数据仓库中使用熟悉的 SQL 命令轻松创建、训练和应用 ML 模型。
我们很高兴推出 Amazon Redshift 流式摄取 Amazon Kinesis数据流 和 适用于Apache Kafka的Amazon托管流 (Amazon MSK),它使您能够直接从 Kinesis 数据流或 Kafka 主题中提取数据,而无需将数据暂存到 亚马逊简单存储服务 (亚马逊 S3)。 Amazon Redshift 流式摄取允许您在将数百兆字节的数据摄取到数据仓库中的同时实现秒级的低延迟。
这篇文章演示了云数据仓库 Amazon Redshift 如何让您通过使用 Amazon Redshift 流式摄取和 Redshift ML 功能以及熟悉的 SQL 语言来构建近乎实时的 ML 预测。
解决方案概述
按照本文中概述的步骤,您将能够在 亚马逊弹性计算云 (Amazon EC2) 模拟信用卡交易并将数据实时推送到 Kinesis Data Streams 的实例。 您在 Amazon Redshift 上设置一个 Amazon Redshift Streaming Ingestion 物化视图,用于接收流数据。 您训练并构建一个 Redshift ML 模型来生成针对流数据的实时推理。
分步过程如下:
- EC2 实例模拟信用卡交易应用程序,它将信用卡交易插入到 Kinesis 数据流中。
- 数据流存储传入的信用卡交易数据。
- Amazon Redshift Streaming Ingestion 实体化视图是在数据流之上创建的,它会自动将流数据摄取到 Amazon Redshift 中。
- 您可以使用 Redshift ML 构建、训练和部署 ML 模型。 Redshift ML 模型使用历史交易数据进行训练。
- 您转换流数据并生成 ML 预测。
- 您可以提醒客户或更新应用程序以降低风险。
本演练使用信用卡交易流数据。 信用卡交易数据是虚构的,并基于 模拟器. 客户数据集也是虚构的,是用一些随机数据函数生成的。
先决条件
- 创建 Amazon Redshift 集群.
- 配置集群以使用 Redshift ML.
- 创建 an AWS身份和访问管理 (IAM)用户。
- 更新附加到 Redshift 集群的 IAM 角色以包含访问 Kinesis 数据流的权限。 有关所需政策的更多信息,请参阅 流式摄取入门.
- 创建一个 m5.4xlarge EC2 实例. 我们使用 m5.4xlarge 实例测试了 Producer 应用程序,但您可以自由使用其他实例类型。 创建实例时,使用 amzn2-ami-kernel-5.10-hvm-2.0.20220426.0-x86_64-gp2 急性心肌梗死。
- 为确保 EC3 实例中安装了 Python2,请运行以下命令来验证您的 Python 版本(请注意,数据提取脚本仅适用于 Python 3):
- 安装以下依赖包运行模拟器程序:
- 使用为在上面的步骤 2 中创建的 IAM 用户生成的 AWS 凭证等变量配置 Amazon EC3。 以下屏幕截图显示了使用的示例 aws 配置.
设置 Kinesis 数据流
Amazon Kinesis Data Streams 是一种可大规模扩展且持久的实时数据流服务。 它可以每秒从数十万个来源连续捕获千兆字节的数据,例如网站点击流、数据库事件流、金融交易、社交媒体提要、IT 日志和位置跟踪事件。 收集的数据可在几毫秒内提供,以支持实时分析用例,例如实时仪表板、实时异常检测、动态定价等。 我们使用 Kinesis Data Streams,因为它是一种无服务器解决方案,可以根据使用情况进行扩展。
创建 Kinesis 数据流
首先,您需要创建一个 Kinesis 数据流来接收流数据:
- 在Amazon Kinesis控制台上,选择 数据流 在导航窗格中。
- 创建数据流.
- 针对 数据流名称,输入
cust-payment-txn-stream
. - 针对 容量模式, 选择 按需.
- 对于其余选项,请选择默认选项并按照提示完成设置。
- 捕获创建的数据流的 ARN,以在下一部分定义 IAM 策略时使用。
设置权限
对于要写入 Kinesis Data Streams 的流应用程序,应用程序需要能够访问 Kinesis。 您可以使用以下策略语句授予您在下一节中设置的模拟器进程访问数据流的权限。 使用您在上一步中保存的数据流的 ARN。
配置流生产者
在我们可以在 Amazon Redshift 中使用流数据之前,我们需要一个将数据写入 Kinesis 数据流的流数据源。 这篇文章使用定制的数据生成器和 适用于Python的AWS开发工具包(Boto3) 将数据发布到数据流。 有关设置说明,请参阅 制作人模拟器. 这个模拟器进程将流式数据发布到上一步创建的数据流中(cust-payment-txn-stream
).
配置流消费者
本节讨论配置流消费者(Amazon Redshift 流摄取视图)。
Amazon Redshift Streaming Ingestion 可将来自 Kinesis Data Streams 的流数据低延迟、高速地摄取到 Amazon Redshift 实体化视图中。 您可以使用 SQL 语句配置您的 Amazon Redshift 集群以启用流式摄取并创建具有自动刷新功能的物化视图,如中所述 在 Amazon Redshift 中创建具体化视图. 自动物化视图刷新过程将以每秒数百兆字节的数据从 Kinesis Data Streams 提取流数据到 Amazon Redshift。 这导致快速访问快速刷新的外部数据。
创建物化视图后,您可以使用 SQL 从数据流访问数据,并通过直接在流顶部创建物化视图来简化数据管道。
完成以下步骤以配置 Amazon Redshift 流式实体化视图:
- 在 IAM 控制台上,在导航窗格中选择策略。
- 建立政策.
- 创建名为的新 IAM 策略
KinesisStreamPolicy
. 对于流策略定义,请参见 流式摄取入门. - 在导航窗格中,选择 角色.
- 选择创建角色。
- 选择 AWS服务 并选择 Redshift 和 Redshift 可定制.
- 创建一个名为的新角色
redshift-streaming-role
并附上保单KinesisStreamPolicy
. - 创建一个外部架构以映射到 Kinesis Data Streams:
现在您可以创建物化视图来使用流数据。 您可以使用 SUPER 数据类型以 JSON 格式按原样存储负载,或使用 Amazon Redshift JSON 函数将 JSON 数据解析为单独的列。 对于这篇文章,我们使用第二种方法,因为模式定义明确。
- 创建流式摄取物化视图
cust_payment_tx_stream
. 通过在以下代码中指定 AUTO REFRESH YES,您可以启用流式摄取视图的自动刷新,从而通过避免构建数据管道来节省时间:
需要注意的是 json_extract_path_text
长度限制为 64 KB。 from_varbye 还过滤大于 65KB 的记录。
- 刷新数据。
Amazon Redshift 流式实体化视图由 Amazon Redshift 为您自动刷新。 这样,您无需担心数据过时。 通过物化视图自动刷新,当数据在流中可用时,数据会自动加载到 Amazon Redshift 中。 如果您选择手动执行此操作,请使用以下命令:
- 现在让我们查询流式实体化视图以查看示例数据:
- 现在让我们检查流式视图中有多少条记录:
现在您已经完成了 Amazon Redshift 流摄取视图的设置,该视图会根据传入的信用卡交易数据不断更新。 在我的设置中,当我运行选择计数查询时,我看到大约 67,000 条记录已被拉入流式视图。 这个数字对你来说可能不同。
红移机器学习
借助 Redshift ML,您可以带来预训练的 ML 模型或本地构建一个。 有关详细信息,请参阅 在 Amazon Redshift 中使用机器学习.
在本文中,我们使用历史数据集训练和构建 ML 模型。 数据包含一个 tx_fraud
将历史交易标记为欺诈性或非欺诈性的字段。 我们使用 Redshift Auto ML 构建了一个受监督的 ML 模型,该模型从该数据集中学习并在通过预测函数运行这些交易时预测传入的交易。
在以下部分中,我们将展示如何设置历史数据集和客户数据。
加载历史数据集
历史表的字段比流式数据源的字段多。 这些字段包含客户最近的支出和终端风险评分,例如通过转换流数据计算的欺诈交易数量。 还有分类变量,如周末交易或夜间交易。
要加载历史数据,请使用 Amazon Redshift查询编辑器.
使用以下代码创建交易历史表。 DDL 也可以在 GitHub上.
让我们检查加载了多少事务:
查看每月欺诈和非欺诈交易趋势:
创建和加载客户数据
现在我们创建客户表并加载数据,其中包含客户的电子邮件和电话号码。 以下代码创建表、加载数据并对表进行采样。 表 DDL 可在 GitHub上.
我们的测试数据有大约 5,000 个客户。 以下屏幕截图显示了示例客户数据。
建立ML模型
我们的历史卡交易表有 6 个月的数据,我们现在使用这些数据来训练和测试 ML 模型。
该模型将以下字段作为输入:
我们得到了 tx_fraud
作为输出。
我们将这些数据分成训练和测试数据集。 从 2022-04-01 到 2022-07-31 的交易是针对训练集的。 从 2022-08-01 到 2022-09-30 的交易用于测试集。
让我们使用熟悉的 SQL 创建 ML 模型 创建模型语句. 我们使用基本形式的 Redshift ML 命令。 下面的方法使用 亚马逊SageMaker自动驾驶仪,它会自动为您执行数据准备、特征工程、模型选择和训练。 提供包含代码的 S3 存储桶的名称。
我称 ML 模型为 Cust_cc_txn_fd
,预测函数为 fn_customer_cc_fd
. FROM 子句显示历史表中的输入列 public.cust_payment_tx_history
. 目标参数设置为 tx_fraud
,这是我们要预测的目标变量。 IAM_Role
设置为默认值,因为集群配置了这个角色; 如果没有,您必须提供您的 Amazon Redshift 集群 IAM 角色 ARN。 我设置了 max_runtime
到 3,600 秒,这是我们给 SageMaker 完成该过程的时间。 Redshift ML 部署在此时间范围内确定的最佳模型。
根据模型的复杂性和数据量,模型可能需要一些时间才能可用。 如果您发现您的模型选择没有完成,增加值 max_runtime
. 您可以将最大值设置为 9999。
CREATE MODEL 命令是异步运行的,这意味着它在后台运行。 您可以使用 展示模型 命令查看模型的状态。 当状态显示为 Ready 时,表示模型已训练和部署。
以下屏幕截图显示了我们的输出。
从输出中,我看到模型已被正确识别为 BinaryClassification
, 并选择 F1 作为目标。 这 F1分数 是一个同时考虑两者的指标 精度和召回率. 它返回一个介于 1(完美的精度和召回率)和 0(最低可能的分数)之间的值。 就我而言,它是 0.91。 值越高,模型性能越好。
让我们用测试数据集测试这个模型。 运行以下命令,检索示例预测:
我们看到有些值匹配,有些不匹配。 让我们将预测与基本事实进行比较:
我们验证了该模型正在运行并且 F1 分数很好。 让我们继续生成对流数据的预测。
预测欺诈交易
由于 Redshift ML 模型已准备就绪,我们可以使用它来运行针对流数据摄取的预测。 历史数据集的字段比我们在流数据源中的字段多,但它们只是围绕客户和欺诈交易终端风险的新近度和频率指标。
通过将 SQL 嵌入到视图中,我们可以非常轻松地在流数据之上应用转换。 创建 第一眼,它在客户级别聚合流数据。 然后创建 第二种观点,它在终端级别聚合流数据,以及 第三视图,它将传入的交易数据与客户和终端聚合数据结合起来,并在一个地方调用预测功能。 第三种视图的代码如下:
在视图上运行 SELECT 语句:
当您重复运行 SELECT 语句时,最新的信用卡交易会近乎实时地进行转换和 ML 预测。
这展示了 Amazon Redshift 的强大功能 — 借助易于使用的 SQL 命令,您可以通过应用复杂的窗口函数来转换流数据,并应用 ML 模型一步预测欺诈交易,而无需构建复杂的数据管道或构建和管理额外的基础设施。
展开解决方案
由于中的数据流和 ML 预测是近实时进行的,因此您可以构建业务流程来提醒您的客户使用 亚马逊简单通知服务 (Amazon SNS),或者您可以在操作系统中锁定客户的信用卡帐户。
这篇博文不会详细介绍这些操作,但如果您有兴趣了解有关使用 Amazon Redshift 构建事件驱动解决方案的更多信息,请参阅以下内容 GitHub存储库.
清理
为避免将来产生费用,请删除作为本文的一部分创建的资源。
结论
在本文中,我们演示了如何设置 Kinesis 数据流、配置生产者并将数据发布到流,然后创建 Amazon Redshift Streaming Ingestion 视图并查询 Amazon Redshift 中的数据。 数据进入 Amazon Redshift 集群后,我们演示了如何训练 ML 模型并构建预测函数并将其应用于流数据以生成近乎实时的预测。
如果您有任何反馈或问题,请在评论中留下。
作者简介
巴努·皮坦帕利 是达拉斯的分析专家解决方案架构师。 他擅长构建分析解决方案。 他的背景是数据仓库——架构、开发和管理。 他在数据和分析领域工作超过 15 年。
普拉文·卡迪皮孔达 是位于达拉斯的 AWS 的高级分析专家解决方案架构师。 他帮助客户构建高效、高性能和可扩展的分析解决方案。 他从事构建数据库和数据仓库解决方案工作超过 15 年。
里特什·库马尔·辛哈 是位于旧金山的分析专家解决方案架构师。 16 年来,他一直帮助客户构建可扩展的数据仓库和大数据解决方案。 他喜欢在 AWS 上设计和构建高效的端到端解决方案。 在业余时间,他喜欢阅读、散步和做瑜伽。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://aws.amazon.com/blogs/big-data/near-real-time-fraud-detection-using-amazon-redshift-streaming-ingestion-with-amazon-kinesis-data-streams-and-amazon-redshift-ml/
- 000
- 000客户
- 1
- 10
- 100
- 11
- 15 年
- 67
- 7
- 9
- a
- Able
- 关于我们
- 以上
- ACCESS
- 账号管理
- 操作
- 额外
- 管理
- 高级
- 后
- 驳
- 警惕
- 所有类型
- 允许
- Amazon
- Amazon EC2
- 亚马逊Kinesis
- 量
- 分析师
- 解析
- 分析
- 分析
- 和
- 异常检测
- 阿帕奇
- 应用领域
- 使用
- 应用
- 架构
- 围绕
- 连接
- 汽车
- 自动表
- 自动
- 可使用
- 避免
- AWS
- 背景
- 基于
- 基本包
- 因为
- 成为
- 最佳
- 更好
- 之间
- 大
- 大数据运用
- 带来
- 建立
- 建筑物
- 商业
- 业务流程
- 企业
- 呼叫
- 被称为
- 呼叫
- 捕获
- 卡
- 案件
- 例
- 字符
- 收费
- 查
- 城市
- 云端技术
- 簇
- 码
- 列
- 结合
- 未来
- 注释
- 比较
- 完成
- 完成
- 复杂
- 复杂
- 计算
- 考虑
- 安慰
- 消耗
- 消费者
- 包含
- 经济有效
- 可以
- 创建信息图
- 创建
- 创建
- 创造
- 资历
- 信用
- 信用卡
- 顾客
- 客户数据
- 合作伙伴
- 周期
- 每天
- 达拉斯
- data
- 资料准备
- 数据仓库
- 数据仓库
- 数据库
- 数据库
- 数据集
- 日期
- 决策
- 默认
- 定义
- 交付
- 证明
- 依赖的
- 部署
- 部署
- 部署
- 描述
- 设计
- 详情
- 检测
- 开发
- 研发支持
- 不同
- 直接
- 不会
- 做
- 别
- 窗口
- 动态
- 容易
- 易于使用
- 效果
- 高效
- 邮箱地址
- enable
- 使
- 端至端
- 工程师
- 输入
- 醚(ETH)
- 活动
- 事件
- 例子
- 兴奋
- 外部
- 萃取
- f1
- 熟悉
- 高效率
- 专栏
- 特征
- 反馈
- 部分
- 字段
- 过滤器
- 金融
- 找到最适合您的地方
- 标志
- 流
- 遵循
- 以下
- 如下
- 申请
- 格式
- 发现
- FRAME
- 旧金山
- 骗局
- 欺诈检测
- Free
- 频率
- 止
- 充分
- 功能
- 功能
- 未来
- 生成
- 产生
- 发电
- 发电机
- 得到
- 给
- Go
- 非常好
- 授予
- 陆运
- 团队
- 有
- 帮助
- 帮助
- 更高
- 近期亮点
- 历史的
- 历史
- 创新中心
- How To
- HTML
- HTTPS
- 数百
- IAM
- 确定
- 身分
- 重要性
- in
- 包括
- 来电
- 增加
- 增加
- 个人
- 信息
- 基础设施
- 输入
- 刀片
- 可行的洞见
- 安装
- 例
- 研究所
- 说明
- 有兴趣
- IT
- 加入
- JSON
- 卡夫卡
- Kinesis 数据流
- 语言
- 大
- 潜伏
- 最新
- 发射
- 学习
- 离开
- 长度
- Level
- 极限
- 局限性
- 加载
- 负载
- 长期
- 低
- 机
- 机器学习
- 制成
- 使
- 制作
- 管理
- 管理的
- 手动
- 许多
- 地图
- 大规模
- 匹配
- matplotlib
- 最大
- 手段
- 媒体
- 方法
- 公
- 指标
- 减轻
- ML
- 时尚
- 模型
- 模型
- 每月一次
- 个月
- 更多
- 最先进的
- 移动
- 姓名
- 旅游导航
- 需求
- 需要
- 全新
- 下页
- 通知
- 数
- 麻木
- 目标
- 一
- 打开
- 操作
- 操作
- 运营
- 机会
- 附加选项
- 秩序
- 组织
- 其他名称
- 概述
- 包
- 大熊猫
- 面包
- 参数
- 部分
- 演出
- 性能
- 施行
- 权限
- 电话
- 地方
- 规划行程
- 平台
- 平台
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 请
- 政策
- 政策
- 可能
- 帖子
- 功率
- 平台精度
- 预测
- 预测
- 预测
- 预测
- 以前
- 价格
- 过程
- 过程
- 制片人
- 曲目
- 提供
- 提供
- 国家
- 发布
- 蟒蛇
- 问题
- 很快
- 随机
- 阅读
- 准备
- 真实
- 实时的
- 实时数据
- 实现
- 接收
- 收到
- 最近
- 确认
- 记录
- 反复
- 更换
- 必须
- 资源
- 资源
- REST的
- 成果
- 回报
- 风险
- 角色
- 运行
- 运行
- sagemaker
- 圣
- 旧金山
- 可扩展性
- 鳞片
- 截图
- SDK
- 海生的
- 其次
- 秒
- 部分
- 部分
- 安全
- 选
- 选择
- 无服务器
- 服务
- 集
- 设置
- 设置
- 格局
- 短期的
- 显示
- 作品
- 简易
- 简化
- 模拟器
- So
- 社会
- 社会化媒体
- 方案,
- 解决方案
- 一些
- 来源
- 来源
- 专家
- 专业
- 花
- 分裂
- SQL
- 阶段
- 标准
- 开始
- 州/领地
- 个人陈述
- 声明
- Status
- 步
- 步骤
- 存储
- 商店
- 商店
- 善用
- 流
- 流
- 流媒体服务
- 流
- 这样
- 超级
- 系统
- 产品
- 表
- 采取
- 需要
- 会谈
- 目标
- 终端
- test
- 第三
- 数千
- 通过
- 次
- 时间戳
- 至
- 最佳
- 主题
- 传统
- 培训
- 熟练
- 产品培训
- 交易
- 交易
- 交易
- 改造
- 转换
- 转型
- 趋势
- 更新
- 更新
- 用法
- 使用
- 用户
- 验证
- 折扣值
- 价值观
- 各个
- Verity的
- 版本
- 查看
- 意见
- 步行
- 演练
- 仓库保管
- 仓储服务
- 您的网站
- 周末
- 每周
- 什么是
- 这
- 而
- 维基百科上的数据
- 将
- 也完全不需要
- 工作
- 加工
- 合作
- 写
- 年
- 瑜伽
- 您一站式解决方案
- 和风网