【发布时间】:2018-10-30 02:04:38
【问题描述】:
我有一个用编辑器编写的胶水脚本(test.py)。我连接到胶水开发端点并将脚本复制到端点,或者我可以存储在 S3 存储桶中。基本上粘合端点是一个 EMR 集群,现在我如何从开发端点终端运行脚本?我可以使用 spark-submit 并运行它吗?
我知道我们可以从胶水控制台运行它,但更想知道我是否可以从胶水端点终端运行它。
【问题讨论】:
标签: amazon-web-services aws-glue
我有一个用编辑器编写的胶水脚本(test.py)。我连接到胶水开发端点并将脚本复制到端点,或者我可以存储在 S3 存储桶中。基本上粘合端点是一个 EMR 集群,现在我如何从开发端点终端运行脚本?我可以使用 spark-submit 并运行它吗?
我知道我们可以从胶水控制台运行它,但更想知道我是否可以从胶水端点终端运行它。
【问题讨论】:
标签: amazon-web-services aws-glue
你不需要笔记本;您可以通过 ssh 连接到 dev 端点并使用 gluepython 解释器(不是普通的 python)运行它。
例如
radix@localhost:~$ DEV_ENDPOINT=glue@ec2-w-x-y-z.compute-1.amazonaws.com
radix@localhost:~$ scp myscript.py $DEV_ENDPOINT:/home/glue/myscript.py
radix@localhost:~$ ssh -i {private-key} $DEV_ENDPOINT
...
[glue@ip-w-x-y-z ~]$ gluepython myscript.py
您也可以直接运行脚本,而无需使用 ssh 获取交互式 shell(当然,在使用 scp 或其他方式上传脚本之后):
radix@localhost:~$ ssh -i {private-key} $DEV_ENDPOINT gluepython myscript.py
如果这是一个使用 Job 类的脚本(就像自动生成的 Python 脚本那样),您可能需要传递 --JOB_NAME 和 --TempDir 参数。
【讨论】:
出于开发/测试目的,您可以在本地设置 zeppelin 笔记本,使用 AWS Glue 端点 URL 建立 SSH 连接,这样您就可以访问数据目录/爬虫等。以及您的数据所在的 s3 存储桶。
所有测试完成后,您可以捆绑您的代码,上传到 S3 存储桶。然后在 S3 存储桶中创建一个指向 ETL 脚本的作业,以便作业可以运行,也可以调度。
有关设置本地环境的任何帮助,请参阅here 和setting up zeppelin on windows。您可以使用 Glue 提供的开发实例,但您可能会为此产生额外费用(EC2 实例费用)。
设置好 zeppelin notebook 后,您可以将脚本 (test.py) 复制到 zeppelin notebook,然后从 zeppelin 运行。
根据 AWS Glue 常见问题:
问:我应该什么时候使用 AWS Glue 与 Amazon EMR?
AWS Glue 在 Apache Spark 环境之上工作,以提供 数据转换作业的横向扩展执行环境。 AWS Glue 推断、演进和监控您的 ETL 作业,从而大大简化 创造和维持工作的过程。 Amazon EMR 为您提供 直接访问您的 Hadoop 环境,为您提供 更低级别的访问权限和更大的灵活性使用工具 火花。
您对在 EMR 实例中运行 Glue 脚本有任何特定要求吗?因为在我看来,EMR 提供了更大的灵活性,您可以使用任何第 3 方 python 库并直接在 EMR Spark 集群中运行。
问候
【讨论】: