使用 AWS Glue 缩短开发周转时间

Faster development turnaround time with AWS Glue

AWS Glue 看起来很有前途,但我在开发周期时间方面遇到了挑战。如果我通过 AWS 控制台编辑 PySpark 脚本,即使在最小的测试数据集上,也需要几分钟 运行。如果我不得不等待 3-5 分钟只是为了查看我是否在 glueContext 上调用了正确的方法或理解了特定的 DynamicFrame 行为,这使得快速迭代成为一个挑战。

哪些技术可以让我更快地迭代?

我想我可以在本地开发 Spark 代码,然后将其部署到 Glue 作为执行框架。但是,如果我需要使用特定于 Glue 的扩展来测试代码,我就卡住了。

对于开发和测试脚本,Glue 具有 Development Endpoints which you can use with notebooks like Zeppelin installed either on a local machine or on Amazon EC2 instance(其他选项为 'REPL Shell' 和 'PyCharm Professional')。

以来,请不要忘记在完成测试后删除端点。

我将 pyspark 代码保存在单独的 class 文件中,并将粘合代码保存在另一个文件中。我们只使用胶水来读写数据。我们在本地机器上使用 pytest 进行测试驱动开发。不需要开发端点或齐柏林飞艇。在 pyspark 中修复所有语法或业务逻辑特定错误后,端到端测试将使用胶水完成。我们还编写了 shell 脚本,它将最新代码上传到 S3 存储桶,胶水作业是 运行.

  1. https://github.com/fatangare/aws-glue-deploy-utility
  2. https://github.com/fatangare/aws-python-shell-deploy