更新数据库块上的库
apparate的Python项目详细描述
幻影
使库神奇地出现在数据块中。
为什么我们要建造这个
当我们的团队开始为我们维护的各种包设置ci/cd时,我们遇到了将jenkins与databrick集成的一些困难。
在我们的数据科学工作中,我们编写了很多python+pyspark包,而且我们经常在批处理作业使用databrick按计划运行时部署这些包。但是,每次我们合并到这些库中的一个新更改中时,我们都必须手动创建一个egg,使用databricks gui上传它,找到使用该库的所有作业,并更新每个作业以指向新作业。随着我们的团队、图书馆和工作岗位的增加,这种情况变得不可持续(更不用说从ci/cd的理念上有了重大突破……。
当我们开始使用databrick的library api实现自动化时,我们意识到这项任务需要使用两个版本的api和许多依赖的api调用。我们没有试图在每个jenkinsfile中重新创建逻辑,而是编写了apparate。现在你也可以享受魔法了!
Apparate现在可用于.egg
和.jar
文件,以支持python+pyspark和scala+spark库。
利用Apparate更新作业的能力,确保遵循以下命名约定之一:
new_library-1.0.0-py3.6.egg
new_library-1.0.0-SNAPSHOT-py3.6.egg
new_library-1.0.0-SNAPSHOT-my-branch-py3.6.egg
new_library-1.0.0.egg
new_library-1.0.0-SNAPSHOT.egg
new_library-1.0.0-SNAPSHOT-my-branch.egg
new_library-1.0.0.jar
new_library-1.0.0-SNAPSHOT.jar
new_library-1.0.0-SNAPSHOT-my-branch.jar
其中版本中的第一个数字(在本例中为1
)是表示中断更改的主要版本。
它的功能
Apparate是一个以自动化方式管理数据库块中的库的工具。它允许您从点击式界面转移到开发工作和部署生产级库以用于计划的数据块作业。
有关更详细的API和教程,请查看文档
安装
注意:apparate需要python3,并且目前只在运行aws(而不是azure)的databricks帐户上工作
apparate托管在pypi上,因此要获得最新版本,只需通过pip安装即可:
pip install apparate
您还可以从源代码安装,方法是克隆git存储库https://github.com/shoprunner/apparate.git" rel="nofollow">https://github.com/shoprunner/apparate.git并通过easy_install:
git clone https://github.com/ShopRunner/apparate.git
cd apparate
easy_install .
设置
配置
apparate使用.apparatecfg
来存储有关您的databricks帐户和设置的信息。要创建此文件,请运行:
apparate configure
系统将要求您输入数据块主机名(用于访问帐户的url-类似于https://my organization.cloud.databricks.com
)、访问令牌和生产文件夹。这应该是您的团队创建的一个文件夹,用于保存生产就绪的库。通过将生产就绪库隔离在自己的文件夹中,可以确保Apparate永远不会更新作业以使用仍在开发/测试中的库。
数据块API令牌
API令牌可以在"帐户设置"->;"访问令牌"下的"数据块"中生成。要将egg上载到databricks中的任何文件夹,可以使用任何令牌。要更新作业,您需要一个具有管理员权限的令牌,管理员可以用相同的方式在该帐户上创建该令牌。
使用说明
虽然库可以上载到指定的生产库以外的文件夹,但此文件夹以外的库将不会被删除,并且使用此文件夹以外的库的作业也不会被更新。
如果您尝试将库上载到已存在的具有相同版本的数据块,则会打印一条警告,指示用户在发生更改时更新版本。已经做了。如果没有版本更改,则不会上载新库。
贡献
看到幻影改善的方法了吗?我们欢迎大家以发稿或拉稿的形式提出要求!
有关详细信息,请查看贡献页。
许可证
版权所有(c)2018,ShopRunner
在满足以下条件的情况下,允许以源代码和二进制格式重新分发和使用(无论是否修改):
源代码的重新分发必须保留上述版权声明、此条件列表和以下免责声明。
以二进制形式重新分发必须在分发时提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。
未经事先书面许可,版权所有人的姓名或其贡献者的姓名均不得用于认可或推广由本软件衍生的产品。
本软件由版权所有人和贡献者"按原样"提供,任何明示或默示保证,包括但不限于对适销性和特定用途适用性的默示保证,概不负责。在任何情况下,版权持有人或贡献者均不对任何直接、间接、附带、特殊、惩戒性或后果性损害(包括但不限于购买替代货物或服务;使用、数据或利润损失;或业务中断)承担责任,无论该损害是如何造成的。d基于任何责任理论,无论是在合同中,严格责任,或因使用本软件而产生的侵权行为(包括疏忽或其他),即使被告知此类损害的可能性。