【问题标题】:AWS Glue Job Lifecycle - Notebook to JobAWS Glue 作业生命周期 - 笔记本到作业
【发布时间】:2019-08-25 13:57:28
【问题描述】:

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

如果笔记本是编写和开发粘合/火花作业的理想 IDE。一旦你按照你想要的方式编写了脚本,是否有一个简单的“部署路径”可以让 notebook 成为一项工作?我可以看到两个不同的工作流程

  1. 复制和粘贴 - 不优雅但简单,从笔记本复制代码并将其粘贴到新的粘合作业定义中。您祈祷笔记本中的代码不会与胶水作业不同步。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我创建了一个库,用于打包您的代码、将其发送到胶合并通过逐步函数对其进行编排。它的目标是简化从本地开发到在 AWS 上运行的过程。

        通过pip install datajob 安装它。您需要安装 aws cdk。

        您可以在 github 存储库中找到快速入门和示例:https://github.com/vincentclaes/datajob

        如果遇到问题,请在 github 上提出问题。

        【讨论】:

          猜你喜欢
          • 2019-02-21
          • 2019-11-19
          • 2018-08-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多