AWS Glue ETL 脚本生成和可移植性
AWS Glue ETL scripts generation and portability
AWS Glue 创建 ETL 脚本来转换、扁平化和丰富数据。代码在 Scala 或 Python 中生成并为 Apache Spark 编写。
我的问题与这些脚本的可移植性有关。我是否可以在另一个 (non-AWS/EMR) Apache Spark 集群上使用相同的脚本(由 AWS Glue 生成)而无需修改,或者这些脚本与 AWS Glue Apache Spark 实施紧密结合?
在 Scala 和 Python 中生成的脚本都依赖于 GlueContext 和其他 Glue 库对象。
AFAIK Glue 运行 环境在 Glue 之外不可用。
我认为一个明智的方法是使用 Glue 作为对执行 Spark 的硬件的抽象,并独立于 Glue 编写脚本(最后 GlueContext 和 DynamicFrame 不提供那么多功能)。然后你可以 运行 你的代码在任何你喜欢的地方。
我们每个胶水作业使用两个文件:job_glue.py 和 job_pyspark.py。
在 job_glue.py 中保留胶水特定代码,在 job_pyspark.py 中保留非胶水代码。
这不仅有助于 运行 Glue 和 EMR 中的相同代码,而且还允许对 pyspark 代码进行单元测试,因为 Glue 模拟目前不可用。与使用开发端点和 zeppelin notebook 相比,测试驱动方法更快且更具成本效益
AWS Glue 创建 ETL 脚本来转换、扁平化和丰富数据。代码在 Scala 或 Python 中生成并为 Apache Spark 编写。
我的问题与这些脚本的可移植性有关。我是否可以在另一个 (non-AWS/EMR) Apache Spark 集群上使用相同的脚本(由 AWS Glue 生成)而无需修改,或者这些脚本与 AWS Glue Apache Spark 实施紧密结合?
在 Scala 和 Python 中生成的脚本都依赖于 GlueContext 和其他 Glue 库对象。 AFAIK Glue 运行 环境在 Glue 之外不可用。
我认为一个明智的方法是使用 Glue 作为对执行 Spark 的硬件的抽象,并独立于 Glue 编写脚本(最后 GlueContext 和 DynamicFrame 不提供那么多功能)。然后你可以 运行 你的代码在任何你喜欢的地方。
我们每个胶水作业使用两个文件:job_glue.py 和 job_pyspark.py。 在 job_glue.py 中保留胶水特定代码,在 job_pyspark.py 中保留非胶水代码。 这不仅有助于 运行 Glue 和 EMR 中的相同代码,而且还允许对 pyspark 代码进行单元测试,因为 Glue 模拟目前不可用。与使用开发端点和 zeppelin notebook 相比,测试驱动方法更快且更具成本效益