微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从其他项目更新 dvc 注册表中的数据

如何解决从其他项目更新 dvc 注册表中的数据

我有几个项目正在使用和更新相同的数据源。我最近了解了 dvc's data registries,这听起来像是跨这些不同项目(例如抓取工具、计算管道)版本化数据的好方法

我已将所有相关数据放入 data-registry 中,然后使用以下命令将相关文件导入到刮刀项目中:

$ poetry run dvc import https://github.com/username/data-registry raw

其中 raw 是存储抓取数据的目录。这似乎工作正常,但是当我去构建 a dvc pipeline 输出 数据到一个已经被 dvc 跟踪的文件中时,我得到了一个错误

$ dvc run -n menu_items -d src/ -o raw/menu_items/restaurant.jsonl scrapy crawl restaurant
ERROR: Paths for outs:                                                
'raw'('raw.dvc')
'raw/menu_items/restaurant.jsonl'('menu_items')
overlap. To avoid unpredictable behavIoUr,rerun command with non overlapping outs paths.

有人能帮我理解这里发生了什么吗? 使用数据注册表跨项目共享和更新数据的最佳方式是什么?

理想情况下,我希望使用来自刮刀项目的新数据更新数据注册表,然后允许其他相关项目在准备好更新数据时更新它们的数据。

解决方法

当您在项目中import(或add)某些东西时,会创建一个 .dvc 文件,其中列出某些东西(在本例中为 raw/ 目录)作为“输出”。

DVC 不允许 .dvc 文件或 dvc.yaml 阶段之间的重叠输出,这意味着您的“menu_items”阶段不应写入 raw/,因为它已经在 raw.dvc 的控制之下。

你能为管道输出创建一个单独的目录吗?例如。使用 processed/menu_items/restaurant.jsonl

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。