如何为 AWS Glue 生产 Python 脚本?
How to productionise Python script for AWS Glue?
我正在观看此教程视频:https://www.youtube.com/watch?v=EzQArFt_On4
本视频中提供的示例代码:
from awsglue.utils import getResolvedOptions
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.context import SparkContext
glueContext = GlueContext(SparkContext.getOrCreate())
glueJob = Job(glueContext)
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
glueJob.init(args['JOB_NAME'], args)
sparkSession = glueContext.spark_session
#ETL process code
def etl_process():
...
return xxx
glueJob.commit()
请问函数etl_process
之前的部分是否可以直接用于生产?或者我是否需要将该部分包装到一个单独的函数中,以便我可以为其添加单元测试?
像这样:
def define_spark_session():
sc = SparkContext.getOrCreate()
glue_context = GlueContext(sc)
glue_job = Job(glue_context)
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
glue_job.init(args['JOB_NAME'], args)
spark_session = glue_context.spark_session
return spark_session
不过好像不需要参数...
或者我应该只为 etl_process
函数编写单元测试吗?
或者我可以创建一个单独的 python 文件,其中包含 etl_process
函数并将其导入此脚本?
我是新手,有点困惑,请问有人能帮忙吗?谢谢。
目前很难在本地测试 AWS Glue 本身,尽管有一些解决方案,例如下载 AWS 为您提供的 docker 图像并从那里 运行 它(您可能需要一些调整,但应该没问题。
我想最简单的方法是将您从 gluelibs
获得的 DynamicFrame
转换为 Spark DataFrame
(.toDf()
) 然后在纯 Spark 中思考 ( PySpark),这样您就可以测试结果了。
dataFrame = dynamic_frame.toDf()
def transormation(dataframe):
return dataframe.withColumn(...)
def test_transformation()
result = transformation(input_test_dataframe)
assert ...
我正在观看此教程视频:https://www.youtube.com/watch?v=EzQArFt_On4
本视频中提供的示例代码:
from awsglue.utils import getResolvedOptions
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.context import SparkContext
glueContext = GlueContext(SparkContext.getOrCreate())
glueJob = Job(glueContext)
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
glueJob.init(args['JOB_NAME'], args)
sparkSession = glueContext.spark_session
#ETL process code
def etl_process():
...
return xxx
glueJob.commit()
请问函数etl_process
之前的部分是否可以直接用于生产?或者我是否需要将该部分包装到一个单独的函数中,以便我可以为其添加单元测试?
像这样:
def define_spark_session():
sc = SparkContext.getOrCreate()
glue_context = GlueContext(sc)
glue_job = Job(glue_context)
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
glue_job.init(args['JOB_NAME'], args)
spark_session = glue_context.spark_session
return spark_session
不过好像不需要参数...
或者我应该只为 etl_process
函数编写单元测试吗?
或者我可以创建一个单独的 python 文件,其中包含 etl_process
函数并将其导入此脚本?
我是新手,有点困惑,请问有人能帮忙吗?谢谢。
目前很难在本地测试 AWS Glue 本身,尽管有一些解决方案,例如下载 AWS 为您提供的 docker 图像并从那里 运行 它(您可能需要一些调整,但应该没问题。
我想最简单的方法是将您从 gluelibs
获得的 DynamicFrame
转换为 Spark DataFrame
(.toDf()
) 然后在纯 Spark 中思考 ( PySpark),这样您就可以测试结果了。
dataFrame = dynamic_frame.toDf()
def transormation(dataframe):
return dataframe.withColumn(...)
def test_transformation()
result = transformation(input_test_dataframe)
assert ...