使用AWS存储的targets项目执行tar_prune()报错,如何修复?
解决targets项目AWS S3存储下
tar_prune()报错的方法 1. 定位关联NA存储桶的目标
先找出元数据里存储桶信息为NA的目标,执行以下命令查询存储相关字段:
tar_meta(fields = c(name, storage, bucket))
该命令会列出所有目标的名称、存储类型和关联存储桶,找到bucket列值为NA的目标,这就是报错的源头。也可以结合tar_meta(fields = warnings)的结果,那些标记为“已不存在”的目标大概率就是问题对象,交叉验证确认。
2. 修复目标元数据
找到问题目标后,按需选择以下方式处理:
- 手动修正元数据(需保留目标时)
假设问题目标名为problem_target,直接更新它的存储桶信息:
tar_meta_update( name = problem_target, bucket = "你的有效S3桶名称" )
替换成你实际使用的合法S3桶名。
- 直接删除问题目标元数据(无需保留目标时)
直接从元数据中移除该目标:
tar_meta_delete(problem_target)
3. 重新执行tar_prune()
完成元数据修复或删除后,再次运行:
tar_prune()
此时应该能正常清理无效的目标元数据和对应的S3对象。
批量处理无效目标
如果tar_meta(fields = warnings, complete_only = TRUE)返回的已不存在目标较多,可以批量处理:
- 导出有问题的目标列表:
invalid_targets <- tar_meta(fields = warnings, complete_only = TRUE) %>% filter(!is.na(warnings)) %>% pull(name)
- 批量删除这些目标的元数据:
tar_meta_delete(invalid_targets)
之后再执行tar_prune()即可。
内容的提问来源于stack exchange,提问作者scoa
相关产品推荐
相关产品推荐

