在生产中运行的R脚本的最佳实践编码

时间:2016-04-28 16:05:00

标签: r production-environment

我们有一个linux生产服务器和一些我们正在编写的脚本,我们想在它上面运行以收集数据,然后将这些数据放入Spark数据湖。

我的背景是SQL Server / Fortran,应该遵循非常具体的最佳实践

  • 从代码的角度来看,生产环境在版本控制方面应该是稳定的,而且还应该是已安装的应用程序,操作系统等。
  • 对代码/应用程序/操作系统的更改应在单独的环境中进行,或者以受控制的方式进行,并且可以退出
  • 如果存在第二个环境,则可以执行并行执行以测试系统更改的可能性。
  • (很大程度上),开发人员不得改变生产环境

在审查R代码时,我有很多问题需要解决。

  • library(),install.packages() - 我想排除每次运行脚本时安装较新版本软件包的可能性吗?
  • 如何调用通过CRON作业安排的R包?这里有很多选择。
  • 使用RSelenium时,使用gui / web浏览器或虚拟化Web浏览器的最有效方法是什么?

1 个答案:

答案 0 :(得分:1)

无论如何,我会抓住任何自动更新软件包的概念。期望您所依赖的软件包的维护者引入向后不兼容的更改。如果您自动更新,您的代码将停止工作。不要假设任何神圣的东西。

过去你需要问问自己你的部署有多少动手。如果您可以手动设置每个部署,那么您可以使用packrat包来下载并保留您正在使用的确切版本的来源。这种方式重现您的部署是痛苦的,但至少是可能的。如果您想要完全自动化的可重复部署,我建议您开始使用您的软件包构建docker镜像并使用日期或版本标记它们。

如果您没有为复制环境做出任何规定,那么您就会遇到麻烦,而一开始可能只是简单地修复任何不兼容性,因为他们提出了更新,并且确实似乎是来自权力的官方工作流程无论如何被误导;最终,随着你的代码库的增长,你将最终完成所有工作。