什么是好的 Databricks 工作流程

What is a good Databricks workflow

我使用 Azure Databricks 进行数据处理,使用笔记本和管道。

我对目前的工作流程不满意:

好问题。绝对不要修改您的生产代码。

一种推荐的模式是在您的工作区中为开发-暂存-生产保​​留单独的文件夹。做你的开发工作,然后 运行 在最终推广到生产之前在暂存中进行测试。

您可以使用 Databricks CLI 将笔记本从一个文件夹拉出和推送到另一个文件夹,而不会破坏现有代码。更进一步,您可以将此模式与 git 合并以与版本控制同步。在任何一种情况下,CLI 都可以让您以编程方式访问工作区,这应该可以更轻松地更新生产作业的代码。

关于您关于 IDEs 的第二点 - Databricks 提供 Databricks Connect,让您可以在集群上使用 IDE 而 运行ning 命令。根据您的痛点,我认为这对您来说是一个很好的解决方案,因为它会让您更清楚地了解您定义的功能等。您也可以用这种方式编写 运行 单元测试。

准备好脚本后,您可以随时将它们作为笔记本导入工作区,然后 运行 作为作业导入。还知道您可以 运行 .py 脚本作为使用 REST API.

的作业

我个人比较喜欢打包我的代码,将*.whl包复制到DBFS,我可以在DBFS安装测试包并导入。

编辑: 更明确。

The notebook used in production can't be modified without breaking the production. When I want to develop an update, I duplicate the notebook, change the source code until I'm satisfied, then I replace the production notebook with my new notebook.

这可以通过拥有单独的环境来解决DEV/TST/PRD。或者拥有可以单独修改的版本化包。稍后我会澄清。

My browser is not an IDE! I can't easily go to a function definition. I have lots of notebooks, if I want to modify or even just see the documentation of a function, I need to switch to the notebook where this function is defined. Is there a way to do efficient and systematic testing ?

是的,使用我提到的版本控制包方法与 databricks-connect 结合使用,您完全可以使用 IDE、实施测试、进行适当的 git 集成。

Git integration is very simple, but this is not my main concern.

在更大的团队中工作时,内置 git 集成实际上非常差。你不能同时在同一个笔记本上开发,因为与你的同事共享的变化是平坦的和线性的。除此之外,你必须 link 和 unlink 容易出现人为错误的存储库,导致你的笔记本在错误的文件夹中同步,导致 运行s 中断,因为笔记本不能'不能进口。我建议你也使用我的打包解决方案。

打包解决方案的工作原理如下Reference:

  1. 列表项
  2. 在您的桌面上,安装 pyspark
  3. 下载一些匿名数据以供使用
  4. 使用少量数据开发代码,编写单元测试
  5. 准备好测试大数据时,卸载 pyspark,安装 databricks-connect
  6. 当性能和集成足够时,将代码推送到您的远程仓库
  7. 创建 运行 自动化测试的构建管道,并构建版本控制包
  8. 创建将版本控制包复制到 DBFS 的发布管道
  9. 在 "runner notebook" 中接受 "process_date" 和 "data folder/filepath" 作为参数,并从你的版本包中导入模块
  10. 将参数传递给您的模块 运行 您测试的代码

我们的做法 -

-将开发笔记本与 Azure DevOps 集成。

-为笔记本、作业、包和集群部署创建自定义构建和部署任务。使用 DatabBricks RestAPI

很容易做到这一点

https://docs.databricks.com/dev-tools/api/latest/index.html

为测试、暂存和生产部署创建发布管道。 -部署测试和测试。 -部署在暂存和测试上。 - 生产部署

希望这对您有所帮助。