[英]AWS Redshift Data Processing
我正在与一家小公司合作,该公司目前将所有应用数据存储在AWS Redshift集群中。 我的任务是对Redshift集群中的数据进行一些数据处理和机器学习。
我需要做的第一项任务需要基于一些相当简单的SQL逻辑将该集群中现有数据的一些基本转换为一些新表。 在MSSQL环境中,我只需将所有逻辑放入参数化存储过程中,并通过SQL Server代理作业进行调度。 但是,sprocs似乎不是Redshift中的东西。 我将如何创建SQL作业并将其安排为在AWS环境中每晚运行(例如)?
我的另一项任务涉及开发机器学习模型(在Python中)并在Redshift数据库中对记录进行评分。 如果计划是从Redshift集群中提取数据,对其进行评分,然后将其插入到同一集群上的新表中,那么托管我的python逻辑并进行数据处理的最佳方法是什么? 好像我可以启动EC2实例,在那里托管我的python脚本,也在那里进行处理,并安排脚本通过cron运行?
我看到大量的AWS(和非AWS)产品看起来可能与它们相关(AWS Glue / Data Pipeline / EMR),但有很多让我有点不知所措。 在此先感谢您的帮助!
ETL
Amazon Redshift不支持存储过程。 此外,我应该指出,存储过程通常是一件坏事,因为您将逻辑放入存储层,这使得将来很难迁移到其他解决方案。 (我知道许多Oracle客户已经锁定自己无法改变技术!)
您应该在Redshift外部运行ETL逻辑,只需使用Redshift作为数据库。 这可以像运行使用psql
调用Redshift的脚本一样简单,例如:
`psql <authentication stuff> -c 'insert into z select a, b, from x'`
(使用pssh v8,Redshift所基于的。)
或者,您可以使用更复杂的ETL工具,例如AWS Glue (目前不在每个地区)或第三方工具,如Bryte 。
机器学习
是的,您可以在EC2实例上运行代码。 如果它很小,您可以使用AWS Lambda(最长5分钟运行时)。 许多ML用户喜欢在Amazon EMR上使用Spark。 这取决于您需要的技术堆栈。
Amazon CloudWatch Events可以安排 Lambda函数,然后可以启动可以进行处理然后自我终止的EC2实例。
确实有很多选择!
在Redshift上运行ETL的2个选项
通常,在诸如Redshift之类的MPP环境中,最佳实践是将ETL推送到功能强大的数据库(即选项1)。
只考虑在Redshift之外使用ETL(选项2),其中SQL不是转换的理想工具,或者转换可能需要大量的计算资源。
没有内置的计划或编排工具。 如果您需要比cron作业更全面的功能,Apache Airflow是一个不错的选择。
现有数据的基本转换
看来你是一个python开发人员(正如你告诉你正在开发基于Python的ML模型),你可以按照以下步骤进行转换:
托管我的python逻辑的最佳方式
在我看来,你正在从Redshift读取一些数据,然后创建测试和训练集,最后得到一些预测结果(记录)。如果:
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.