【问题标题】:Best Practise R script running in production - package versions在生产中运行的最佳实践 R 脚本 - 包版本
【发布时间】:2016-04-28 21:33:19
【问题描述】:

我们有一个 linux (Ubuntu 14.10) 生产服务器,以及我们编写的许多希望在其上运行的 R 脚本,这些脚本将从 API 或网络抓取收集数据。然后将数据写入 CSV 文件。

我的背景是 SQL Server/Fortran,在生产环境方面应该遵循一些非常具体的最佳实践。一些突出的是:-

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

我的问题是这样的:如何确保与我的 R 代码关联的包保持一致和不变,直到我选择更新它们?

【问题讨论】:

  • 没用过,但你看过packrat吗?

标签: r production-environment


【解决方案1】:

你可以使用 Docker;我们的Rocker project 有几个合适的容器可供启动。

否则只使用基本的 Unix sys.admining:

  • 如果您不想更改 R 的包目录,请将它们设为只读
  • 可能使用 HPC 人员的一些技巧并使用“模块”(即符号链接层或 PATH 设置)来使某些路径和目录可见或不可见

一般来说,Task View on Reproducible Research 有一些更进一步的指针。您可以在每次生产运行中记录所使用的版本,并且您可以设置运行以将版本与预期版本进行比较。

但是这些对于 R 来说都不是真正的——这些都是部署的“元”问题。

【讨论】:

    【解决方案2】:

    @Lev Kuznetsov 使用packrat 发布了另一个解决方案,请参阅他的answer 以了解更一般的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 2015-10-12
      • 2015-08-24
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多