可扩展的数据依赖关系

lazydata的Python项目详细描述


CircleCI

lazydata:可扩展的数据依赖关系

lazydata是一个极简的库,用于将数据依赖项包含到python项目中。

问题:将所有数据文件保存在git中(例如,通过git lfs)会导致存储库副本膨胀,需要花费很长时间才能提取。保持代码和数据不同步是一个等待发生的灾难。

solutionlazydata只在git中存储对数据文件的引用,并在需要时按需同步数据文件。

why:代码和数据的语义不同-需要对代码进行版本控制以合并它,而数据只需要保持同步。lazydata以最小的方式实现了这一点。

优点

  • 只需输入代码即可保持git存储库的干净,同时允许无缝访问任意数量的链接数据文件
  • 使用文件哈希和自动版本控制确保数据一致性
  • 通过ssh选择自己的远程存储后端:aws s3或(即将推出:)目录

lazydata主要用于机器学习和数据科学项目。 有关详细信息,请参见this medium post

开始

在本节中,我们将展示如何在示例项目中使用lazydata

安装

使用pip安装(需要python 3.5+):

$ pip install lazydata

添加到您的项目

要启用lazydata,请在项目根目录下运行:

$ lazydata init 

这将初始化lazydata.yml,它将保存由lazydata管理的文件列表。

跟踪文件

要开始跟踪文件,请在代码中使用track("<path_to_file>")

my_script.py

fromlazydataimporttrack# store the file when loading  importpandasaspddf=pd.read_csv(track("data/my_big_table.csv"))print("Data shape:"+df.shape)

第一次运行脚本将开始跟踪文件:

$ python my_script.py
## lazydata: Tracking a new file data/my_big_table.csv## Data shape: (10000,100)

文件现在已被跟踪并备份到本地lazydata缓存中的~/.lazydata,并添加到lazydata.yml

files:-path:data/my_big_table.csvhash:2C94697198875B6E...usage:my_script.py

如果在不修改数据文件的情况下运行脚本,lazydata将快速检查数据文件是否已更改,并且不会执行任何其他操作。

如果修改数据文件并重新运行脚本,这将使用数据文件的新哈希向yml文件添加另一个条目,即数据文件将自动进行版本控制。如果不想保留以前的版本,只需从yml中删除它们。

你完了!此数据文件现在被跟踪并链接到本地存储库。

共享您的跟踪文件

要从多台计算机访问跟踪的文件,请添加一个远程存储后端,以便上载这些文件。使用s3作为远程存储后端运行:

$ lazydata add-remote s3://mybucket/lazydata

这将配置s3后端,并将其添加到lazydata.yml中以供将来参考。

现在,您可以像平常一样,git提交并推送my_script.pylazydata.yml文件。

要将存储的数据文件复制到s3,请使用:

$ lazydata push

当您的合作者提取最新版本的git存储库时,他们将像往常一样获取脚本和lazydata.yml文件。

当您的协作者运行my_script.py并执行track("my_big_table.csv")时,将下载数据文件:

$ python my_script.py
## lazydata: Downloading stored file my_big_table.csv ...## Data shape: (10000,100)

要在不运行代码的情况下获取数据文件,还可以使用命令行实用程序:

# download just this file
$ lazydata pull my_big_table.csv

# download everything used in this script
$ lazydata pull my_script.py

# download everything stored in the data/ directory and subdirs
$ lazydata pull data/

# download the latest version of all data files
$ lazydata pull

因为git跟踪lazydata.yml,所以您可以安全地创建和切换git分支。

数据依赖场景

通过将lazydata.track()放入代码的不同部分,可以实现多个数据依赖场景:

  • 通过在笔记本中使用跟踪功能实现Jupyter笔记本数据相关性
  • 通过跟踪保存的文件跟踪数据管道输出
  • 通过跟踪__init__(self)
  • 中的文件来实现类级数据依赖性
  • 通过跟踪__init__.py
  • 中的文件实现模块级数据依赖性
  • 通过跟踪setup.py
  • 中的文件实现包级数据依赖关系

很快就来…

  • 检查存储的文件来源和属性
  • 切面多个文件i到便携式数据集
  • 存储来自数据库和API的数据
  • 更多远程存储选项

保持联系

这是一个早期稳定的beta版本。要了解新版本,请订阅我们的new releases mailing list

贡献

这个图书馆是根据apache-2许可证颁发的。欢迎所有的贡献!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IntelliJ找不到依赖项选项卡   java向字符串数组string[]添加元素并在Junit中测试结果   如何在eclipse中获取活动java项目的名称   如何使用java在mysql中插入时间   java ArrayList更新了插入一行,但Jtable仍然没有刷新   如何在JavaSwing中命名坐标(点)   java Matcher/模式不打印   java错误地设置了arraylist   使用UsernamePasswordCredential提供程序的java列表Azure AD   java在HTTP请求中设置UTC时间   未加载事件:jquery完整日历Java集成   java Maven插件依赖项无法从内部repo解析依赖项   Maven更新重置Java版本   java如何向中添加图片。带有Apache POI XWPF的docx,但不指定其大小   Java最大函数递归