云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

腾讯云_饥荒服务器_评分榜

小七 141 0

使用Databricks和AWS代码管道的无服务器连续交付

许多公司的成功通常有两个特点。首先,他们很快适应了新技术。第二,结果是,它们获得了技术领先地位,进而获得了更大的市场份额。能够迅速将洞察力转化为行动的组织在竞争中保持着巨大的优势。以敏捷和迭代的方式开发分析的关键是一个健壮的连续集成(CI)和连续交付(CD)系统,它简化了复杂数据应用程序从开发到生产的过渡。Databricks的交互式工作区是协作开发和交互式分析的理想环境。该平台支持所有必要的功能,使创建连续交付管道不仅可能而且简单。在本博客中,我们将介绍如何利用Databricks和AWS代码管道来交付一个完整的无服务器CI/CD的端到端管道。管道的四个步骤让我们看一个简单的场景。首先,在笔记本上工作的开发人员向Github中的开发分支提交了一份报告。这会自动触发CodePipeline按顺序执行四个阶段:Source–从Github提取分支Staging–Jobs API将在Databricks中启动集成测试作业*批准-将通过电子邮件通知QA进行审查部署——一旦审查成功,笔记本电脑将使用工作区API部署到数据库中,而库则上载到S3以供生产使用由于此示例包含一个用户提交一个Databricks笔记本,因此不包括构建阶段。然而,codepineline支持一些最流行的构建系统(Jenkins、Solano、CodeBuild),它们的实现也有很好的文档记录。来源配置管道的第一步是指定源。CodePipeline目前支持3个源:Github、S3和CodeCommit。由于Databricks提供了与Github的内置集成,它使代码管道的自动化无缝化。用于将Databricks链接到Github的同一个令牌也可以用于将codepipline链接到Github中的特定分支。数据科学家和工程师可以直接从Databricks工作区将笔记本电脑提交到GitHub。CodePipeline持续监视分支,因此当提交笔记本时,它将自动触发管道运行。舞台此时,代码已经提交,需要通过集成测试。通过比较Apache与Spark数据集的运行结果,可以知道这是一种常见的方法。最佳实践是在笔记本中设置基于运行模式(即prod、test等)配置的变量,并可以通过Databricks小部件进行设置。例如,我使用源、目标和模式小部件为测试运行模式设置了一个笔记本。当运行笔记本进行测试时,源在S3中定义为测试数据集,目标是S3中的测试输出位置。当模式设置为'test'时,笔记本会返回写入数据的S3位置,该位置可以由Databricks-Utils-notebook运行命令捕获。然后,这个返回值被传递到DataFrame compare函数中,以提供通过/失败状态。这听起来可能很复杂,但Jobs API使调用作业和传入参数变得非常容易。这个阶段实际上只能使用3个API调用来执行:runsnow、runs list和runs get。现在运行需要一个作业ID,就这样(作业参数可选)。一旦作业开始运行,就可以使用runs get进行轮询,这就引出了下一点——这个阶段是通过调用AWS Lambda函数来执行的(我说过这是无服务器的,对吧?)。这种方法的唯一障碍是处理Lambda的300秒持续时间限制,但幸运的是,codepineline已经用Continuation令牌为我们解决了这个问题。Lambda函数可以将三种状态中的任何一种返回到codepineline—Success、Failure或Continuation。当continuation标记返回到codepineline时,它将再次调用Lambda函数,并包含一个指示该函数已被重新调用的指示符。这只需要被监视,这样我们就不会重新启动已经在运行的作业。通过使用延续令牌,开发人员不再受300秒限制的限制,可以无限期地轮询作业。不过,最好还是为作业设置一个超时时间。批准CodePipeline提供了一个批准阶段,它将在提交继续通过管道之前向需要签署提交的人发送通知。它允许开发人员发送URL链接到需要审查的内容。因此,除了Github repo的位置之外,还可以在Databricks中包含指向作业输出的URL。这与SNS主题相关,因此您需要首先在SNS中创建订阅。这基本上就是指定要向谁发送电子邮件。只有在测试作业通过时,管道才会到达批准阶段,因此为了获得关于失败的即时反馈,最好在Databricks中为作业设置失败警报。部署既然代码已经被批准,就需要部署它。与集成测试一样,部署将通过调用Lambda函数来执行。在codepineline中,源代码作为压缩的工件存储在S3中,其位置从一个阶段传递到另一个阶段。所以,第一步是提取文件。认识到lambda的内存限制,并且知道大多数repo不仅仅包含笔记本和库,所以最好通读文件名,只提取与正确的扩展名和文件路径匹配的文件。笔记本将使用工作区API部署到指定的Databricks工作区。工作区API提供了基本的文件系统功能来执行诸如导入/导出笔记本、创建目录等操作。这可以通过两个API调用来完成:import和Mkdirs。在导入笔记本时,有几点需要注意。首先,笔记本的内容通过base64编码传输,因此需要对数据文件进行编码:其次,如果基目录不存在,导入将失败。它将返回400的错误响应和一条错误消息,说明"RESOURCE_DOES_NOT_EXIST"。只需创建目录并再次导入即可。除了将库导入工作区之外,Databricks还支持直接从S3调用库。这为喜欢在S3中工作的团队提供了额外的选项。例如,当我们阅读文件扩展名时,可以将.jar和.egg文件写入指定的S3存储桶和密钥,同时将笔记本电脑导入工作区。应该为这个bucket打开S3版本控制。结论为了跟上客户不断变化的需求,公司需要采用能够快速提供价值的敏捷开发过程。一个强大的连续配送管道可以减少配送时间,同时让消费者满意。如上所示,Databricks提供了与codepineline集成所需的所有工具,以构建一个健壮、无服务器、经济高效的连续交付模型。要了解更多的数据块,请从今天开始免费试用。免费试用Databricks。今天就开始吧