胶水作业开发的理想开发生命周期是什么?我已经能够创建一个运行胶水作业。作业脚本窗口作为 IDE 很糟糕,这让我了解了笔记本。我已启动并运行笔记本服务器,并且可以使用我的粘附作业使用的相同 S3 存储桶。
如果笔记本是编写和开发粘合/火花作业的理想IDE。一旦你有了你想要的脚本,是否有一个简单的"部署路径"来使笔记本成为一项工作?我可以看到两种不同的工作流程
-
复制和粘贴 - 不优雅但简单,从笔记本复制代码并将其粘贴到新的粘合作业定义中。您交叉手指,笔记本中的代码不会与粘附作业不同步。
-
S3 作为笔记本存储 - 我什至不知道这是否有效,但我在配置中看到齐柏林飞艇可以将笔记本保存到 S3,这就是您所做的,是将齐柏林飞艇和粘合作业指向同一个 S3 位置
有没有其他方法可以做到这一切?我还想利用 Git 对作业文件进行版本控制,因此,如果有某种方法可以在该工作流程中构建,那也很好。
您可以将笔记本解析为 python 脚本。这是我一直在使用的脚本。
这是我目前使用的工作流程: 当您将分支合并到主分支时,它会触发一个 Jenkins 管道,该管道将克隆 git 存储库中的代码,将笔记本解析为正确的 python 代码,构建环境,运行一些测试,然后如果全部成功,则将脚本上传到 AWS Glue 的脚本存储桶并选择性地创建任务。创建作业后,您只需覆盖存储桶中的脚本即可更新代码。
您可以设置一个 AWS 代码管道,将代码放入 S3 中的指定位置:
- 使用 CodeCommit 将本地代码提交到代码存储库
- 使用 CodeBuild 从存储库中获取一个或多个文件并生成工件。示例
buildspec.yml
如下:
artifacts:
files:
- "glue_scripts/**/*"
- 使用 CodeDeploy,选择构建构件作为源,然后选择 S3 存储桶作为目标 然后在 Glue
- 中将脚本的位置分配给"脚本路径"下的 Glue 作业
我创建了一个库来打包您的代码,将其交付到胶水中,并通过步骤函数对其进行编排。它的目标是简化从本地开发到在 AWS 上运行的过程。
通过pip install datajob
安装它。您需要安装 aws cdk。
可以在 github 存储库中找到快速入门和示例:https://github.com/vincentclaes/datajob
如果您遇到问题,请在 github 上提出问题。