我使用进行数据处理,使用笔记本和管道。
我对我目前的工作流程不满意:
发布于 2019-11-13 12:16:33
问得好。绝对不要修改您的生产代码到位。
推荐的一种模式是在您的工作区中保留单独的文件夹以供开发暂存-prod使用。在最终提升到生产之前,先执行开发工作,然后在阶段中运行测试。
您可以使用Databricks CLI将笔记本从一个文件夹拉到另一个文件夹,而不破坏现有代码。更进一步,您可以将此模式与git结合起来,以便与版本控制同步。在任何一种情况下,CLI都允许您对工作区进行编程访问,这将使您更容易更新生产作业的代码。
关于IDE的第二点,Databricks提供了数据库连接,让我们在集群上运行命令时使用IDE。基于您的痛点,我认为这是一个很好的解决方案,因为它将使您对您定义的函数有更多的可见度,等等。您也可以以这种方式编写和运行单元测试。
一旦您的脚本准备就绪,您就可以将它们作为笔记本导入工作区,并作为作业运行。还要知道,您可以使用REST作为作业运行.py脚本。
发布于 2020-04-23 21:36:55
我个人更喜欢打包我的代码,并将*.whl包复制到DBFS,在那里我可以安装测试包并导入它。
编辑:更明确。
在生产中使用的笔记本电脑不能在不中断生产的情况下进行修改。当我想开发一个更新,我复制笔记本,更改源代码,直到我满意,然后我用我的新笔记本取代生产笔记本。
这可以通过有单独的环境DEV/TST/PRD来解决。或者具有可以隔离修改的版本包。我稍后会澄清。
我的浏览器不是IDE!我不能轻易地进行函数定义。我有很多笔记本电脑,如果我想修改甚至只是看到一个函数的文档,我需要切换到定义这个函数的笔记本。是否有办法进行有效和系统的测试?
是的,使用我提到的与databricks-connect相结合的版本化包方法,您完全能够使用您的IDE,实现测试,并进行适当的git集成。
Git集成非常简单,但这不是我关心的主要问题。
在更大的团队中工作时,内置的git集成实际上是非常糟糕的。你不可能同时在同一个笔记本上进行开发,因为你的同事们分享的变化是扁平的和线性的积累。此外,您还必须链接和取消容易发生人为错误的存储库,导致您的笔记本在错误的文件夹中同步,因为无法导入笔记本而导致运行中断。我建议你也使用我的包装解决方案。
打包解决方案的工作方式如下所示:参考文献
发布于 2020-04-25 11:29:42
我们现在的做法-
-Integrate的开发笔记本与Azure DevOps。
用于笔记本、作业、包和集群部署的-Create自定义构建和部署任务。这在DatabBricks RestAPI中很容易实现。
https://docs.databricks.com/dev-tools/api/latest/index.html
创建用于测试、分期和生产部署的发布管道。测试和测试的-Deploy。-Deploy在分期和测试上。生产上的-Deploy
希望这能帮上忙。
https://stackoverflow.com/questions/58822369
复制相似问题