[英]In R, what is the best way to save this type of list as a permanent file?
[英]What is the best way to keep a permanent log from R on stateless (Google Cloud Engine) docker?
我正在使用无状态 docker 映像在 Google Cloud VM 上运行各种数据处理任务。 当进程中断时——由于机器被抢占或 R 崩溃——我需要知道从哪里继续。 那么我怎样才能保留一个可以从 R 读取和写入的永久日志呢?
目前,我正在更新 Google Drive 上的文本文件,但这并不是最快或最稳定的解决方案 - 有更好的想法吗?
看起来您所指的日志不仅仅是日志记录,而是代表一种状态。 我个人会将这些日志/状态写入 Google Cloud Storage 存储桶。 这是查看设置的最简单方法。
已经有一个 R 的 GCS 库,你可以在这里找到它。 请记住为计算服务帐户授予对存储桶的正确权限,否则,您会遇到权限被拒绝的错误。
2个选项供您选择:
感谢@Nebulastic,我现在已经可以使用 GoogleCloudStorage - 似乎比 Google Drive 更快、更可靠。 如果它们对任何人都有帮助,这里是我现在使用的两个包装函数(在创建具有适当权限的服务帐户并创建存储桶之后):
log_to_gcs <- function(message, log_name = "mylog", bucket = "logs-and-states") {
gcs_auth("~/gcs_key.json")
objects <- gcs_list_objects(bucket = bucket)
if (log_name %in% objects$name) {
log <- gcs_get_object(log_name, bucket = bucket)
} else {
log <- character()
}
log <- c(log, message)
tmp <- tempfile()
writeLines(log, tmp)
gcs_upload(tmp, name = "mylog", bucket = bucket)
file.remove(tmp)
}
read_log_gcs <- function(log_name = "mylog", bucket = "logs-and-states") {
gcs_get_object(log_name, bucket = bucket)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.