我目前正在与一家小公司合作,该公司将他们所有的应用程序数据存储在AWS红移集群中。我的任务是对Redshift集群中的数据进行一些数据处理和机器学习。
我需要完成的第一项任务是将集群中的现有数据转换为一些基于一些相当简单的SQL逻辑的新表。在MSSQL环境中,我只需将所有逻辑放入参数化存储过程中,并通过Server代理作业对其进行调度。然而,sprocs似乎并不是Redshift中的一件事。如何创建SQL作业并将其安排为在AWS环境中夜间运行(例如)?
我的另一个任务是开发一个机器学习模型(用Python),并在Redshift数据库中对记录进行评分。如果计划从Redshift集群中提取数据,得分,然后将其插入到同一集群的新表中,那么托管python逻辑并进行数据处理的最佳方法是什么?似乎我可以旋转一个EC2实例,在那里托管我的python脚本,在那里进行处理,并安排脚本通过cron运行?
我看到了大量的AWS (和非AWS)产品,它们看起来可能是相关的(AWS Glue/Data管道/EMR),但是有太多的产品让我有点不知所措。提前感谢您的帮助!
发布于 2017-10-07 14:40:05
ETL
Amazon不支持存储过程。此外,我应该指出,存储过程通常是一件坏事,因为您正在将逻辑放入存储层,这使得将来很难迁移到其他解决方案。(我认识许多甲骨文客户,他们把自己锁在永远无法改变技术的状态中!)
您应该在Redshift外部运行ETL逻辑,只需使用Redshift作为数据库。这可能就像运行一个使用psql
调用Redshift的脚本一样简单,例如:
`psql <authentication stuff> -c 'insert into z select a, b, from x'`
(使用psql v8,它是Redshift的基础。)
或者,您可以使用更复杂的ETL工具,如AWS胶 (目前并不是在每个地区)或第三方工具(如布莱特 )。
机器学习
是的,您可以在EC2实例上运行代码。如果它很小,您可以使用AWS Lambda (最多5分钟运行时间)。许多ML用户喜欢在Amazon上使用Spark。这取决于您需要的技术堆栈。
亚马逊CloudWatch事件可以日程安排 Lambda函数,然后启动EC2实例,这些实例可以完成您的处理,然后进行自我终止。
确实有很多选择!
发布于 2017-10-08 23:13:55
在Redshift上运行ETL的两个选项
通常,在诸如Redshift这样的MPP环境中,最佳实践是将ETL推送到功能强大的数据库(即选项1)。
只考虑将ETL置于Redshift之外(选项2),其中SQL不是转换的理想工具,否则转换可能占用大量的计算资源。
没有内置的调度或编排工具。Apache气流是一个很好的选择,如果您需要更全面的功能比cron作业。
发布于 2017-10-11 02:41:36
现有数据的基本转换
您似乎是python开发人员(正如您已经告诉过您正在开发基于Python的ML模型),您可以通过以下步骤完成转换:
托管我的python逻辑的最佳方法
在我看来,您正在阅读Redshift中的一些数据,然后创建测试和培训集,最后得到一些预测结果(记录).If,因此:
希望这能有所帮助。
https://stackoverflow.com/questions/46618762
复制相似问题