阅读了亚马逊文档后,我的理解是运行/测试Glue脚本的唯一方法是将其部署到开发终端并在必要时进行远程调试。同时,如果(Python)代码由多个文件和包组成,则除主脚本外的所有内容都需要进行压缩。所有这些让我感觉Glue不适用于任何复杂的ETL任务,因为开发和测试都很繁琐。我可以在本地测试我的Spark代码,而无需每次将代码上传到S3,并且可以在CI服务器上验证测试,而无需支付开发Glue终端的费用。
阅读了亚马逊文档后,我的理解是运行/测试Glue脚本的唯一方法是将其部署到开发终端并在必要时进行远程调试。同时,如果(Python)代码由多个文件和包组成,则除主脚本外的所有内容都需要进行压缩。所有这些让我感觉Glue不适用于任何复杂的ETL任务,因为开发和测试都很繁琐。我可以在本地测试我的Spark代码,而无需每次将代码上传到S3,并且可以在CI服务器上验证测试,而无需支付开发Glue终端的费用。
从2019年8月28日开始,亚马逊允许您下载二进制文件并在本地使用Scala和Python开发、编译、调试和单步处理Glue ETL脚本和复杂的Spark应用程序。
请访问此链接。
我和一位AWS销售工程师交谈,他说不行,你只能通过运行云中的Glue转换来测试Glue代码。他提到他们正在测试一个叫做Outpost的东西,以允许本地操作,但它尚未公开发布。所以这似乎是一个坚定的“否”,这很遗憾,因为它看起来相当不错。但是没有单元测试,对我来说就不行。
您可以将粘合剂和Pyspark代码保存在不同的文件中,并可以在本地对Pyspark代码进行单元测试。为了压缩依赖文件,我们编写了一个Shell脚本,该脚本可压缩文件并上传到S3位置,然后应用CF模板以部署Glue作业。 为了检测依赖项,我们创建了(粘合剂作业)_dependency.txt文件。
现在,AWS推出了官方的Docker,使您可以在本地执行Glue:
https://aws.amazon.com/blogs/big-data/building-an-aws-glue-etl-pipeline-locally-without-an-aws-account/该页面上还有一个不错的逐步指南。
据我所知,如果您有大量远程资产,这将是棘手的问题。在Windows上,我通常在编写作业时运行开发端点和本地zeppelin笔记本电脑。每天关掉它。
您可以使用作业编辑器>脚本编辑器来编辑、保存和运行作业。不确定成本差异。
针对CedricB的问题,
为了开发/测试目的,不必将代码上传到S3,您可以在本地设置一个Zeppelin笔记本,建立SSH连接,这样就可以访问数据目录/爬虫等以及存储数据的S3存储桶。
完成所有测试后,可以打包您的代码,上传到S3存储桶。然后创建一个作业,指向S3存储桶中的ETL脚本,以便可以运行和调度该作业。一旦完成所有开发/测试,请确保删除dev端点,因为即使处于空闲状态,我们也会收取费用。
敬礼
Install PySpark using
>> pip install pyspark==2.4.3
Prebuild AWS Glue-1.0 Jar with Python dependencies: Download_Prebuild_Glue_Jar
Copy the awsglue folder and Jar file into your pycharm project from github
Copy the Python code from my git repository
Run the following on your console; make sure to enter your own path:
>> python com/mypackage/pack/glue-spark-pycharm-example.py
来自 我自己的博客
如果您想在 Docker 中运行此程序,请参考以下链接:
Docker Hub: https://hub.docker.com/r/svajiraya/glue-dev-1.0
Dockerfile 的 Git 存储库
https://github.com/svajiraya/aws-glue-libs/blob/glue-1.0/Dockerfile