我有一个R脚本,我每天都会运行来自几个不同网站的数据,然后将数据写入几个不同的CSV文件。每天,在特定时间(每天更改)我打开RStudio,打开文件,然后运行脚本。我检查它每次都正确运行,然后我将输出保存为CSV文件。每天必须这样做通常很痛苦(每天需要大约10-15分钟)。如果我能在预先定义的特定时间自动运行此脚本,我会很喜欢它,我的伙伴说AWS能够做到这一点吗?
这是真的吗?如果是这样,AWS能够做到这一点的具体功能/方面是什么,这样我可以更多地了解它?
谢谢!
答案 0 :(得分:5)
有两种选择可以考虑这个问题:
rscript
。参见例如here关于如何设置rpy2
- 套餐
完成此设置后,通过CloudWatch Events(〜托管的cron-job)安排该功能。 Here您可以找到有关如何执行此操作的分步指南
还有一件事:您说您的函数输出CSV文件:要正确保存它们,您需要将它们放到像AWS-S3这样的文件存储中。你可以通过aws.s3 - 包来做到这一点。另一种选择是使用lambda函数中预装的AWS SDK for python。你可以,例如将csv文件写入/tmp/
- dir,然后在 R 脚本完成后,通过boto3's S3 upload_file function将文件移至S3。恕我直言,第一个选项更容易设置,但第二个选项更强大。
答案 1 :(得分:1)
这有点违反直觉,但您可以使用Cloudwatch并定期运行事件规则。它可以运行Lambda或将消息发送到SNS主题或SQS队列。您将遇到的挑战是Lambda不支持R,因此您必须让Lambda启动其他内容或者等待SNS主题或SQS队列为您运行脚本。它不是一个完美的解决方案,因为可能存在相当多的移动部件。
答案 2 :(得分:1)
@stdunbar关于使用CloudWatch Events来触发lambda函数是正确的。您可以设置触发器的频率或使用Cron。但正如他所提到的,Lambda本身并不支持R。
这可以帮助您将R与Lambda一起使用:R Statistics ready to run in AWS Lambda and x86_64 Linux VMs
答案 3 :(得分:0)
如果您正在运行Windows,更简单的解决方案之一是编写.BAT脚本来运行您的R脚本,然后使用Window的任务调度程序根据需要运行。
要从批处理文件中调用R脚本,请使用以下语法:
C:\Program Files\R\R-3.2.4\bin\Rscript.exe" C:\rscripts\hello.R
只需验证“RScript”应用程序的路径,并且您的R代码是正确的。