AWS Glue作业生命周期-笔记本到作业

时间:2019-04-03 22:32:49

标签: git apache-spark amazon-s3 apache-zeppelin aws-glue

胶水作业开发的理想开发生命周期是什么?我已经能够创建一个胶水作业。作业脚本窗口像IDE一样糟糕,这使我了解了笔记本。我已经启动并运行了笔记本服务器,并且可以利用我的胶水作业所使用的同一S3存储桶。

如果笔记本是编写和开发胶水/火花作业的理想IDE。一旦有了所需脚本,是否有简单的“部署路径”即可使笔记本成为工作?我可以看到两个不同的工作流程

  1. 复制和粘贴-不优雅但简单,请从笔记本中复制代码并将其粘贴到新的粘贴作业定义中。您不由自主地注意到笔记本中的代码不会与胶粘作业不同步。

  2. S3作为笔记本存储-我什至不知道这是否可行,但我在配置中看到Zeppelin可以将笔记本保存到S3,这是您要做的,将Zeppelin和Glue Job指向笔记本。 S3位置相同

还有其他方法可以完成所有这些操作吗?我还想利用Git对作业文件进行版本控制,因此,如果在工作流中构建某种方式也很好。

2 个答案:

答案 0 :(得分:1)

您可以将笔记本解析为python脚本。这是我一直在使用的script

这是我当前正在使用的工作流程: 当您将分支合并到master分支时,它会触发Jenkins管道,该管道将在git repo中克隆代码,将笔记本解析为正确的python代码,构建环境,运行一些测试,如果一切成功,则将脚本上传到AWS Glue的脚本存储桶,并可以选择创建一个作业。创建作业后,您只需覆盖存储桶中的脚本即可更新代码。

答案 1 :(得分:1)

您可以设置一个 AWS Code Pipeline,将代码放置到 S3 中的指定位置:

  • 使用 CodeCommit 将您的本地代码提交到代码存储库
  • 使用 CodeBuild 从存储库中获取一个或多个文件并生成一个工件。示例 buildspec.yml 如下:
artifacts:
    files:
        - "glue_scripts/**/*"
  • 使用 CodeDeploy,选择构建工件作为源并选择 S3 存储桶作为目标
  • 然后在 Glue 中将脚本的位置分配给“脚本路径”下的 Glue 作业