在 Python 中编写的 AWS Glue 作业中构建并导入 Cython 模块
build and import a Cython module in AWS Glue job written in Python
为了加快 ETL 作业的执行速度,我在 Cython“regression.pyx” 而不是 python 中实现了回归算法。
遗憾的是,我找不到任何文档,说明如何正确集成到 AWS Glue 作业中。
我想在 python 粘合作业中导入 Cython 回归模块,如下所示:
from regression import reg
通常,Cython 脚本必须使用setup.py 脚本构建,然后才能导入。在 AWS glue 作业中正确集成的最佳方法是什么?
如有任何帮助,我们将不胜感激。
您可以在创建作业时指定外部库位置。
您只需将 .zip 或 .whl 文件上传到 S3 并指定路径。
更多信息here。
我的 CodePipeline 的构建规范:
BuildGlueModules:
Type: AWS::CodeBuild::Project
Properties:
Artifacts:
Type: CODEPIPELINE
Environment:
ComputeType: BUILD_GENERAL1_MEDIUM
Image: aws/codebuild/standard:4.0
Type: LINUX_CONTAINER
Name: !Sub ${AWS::StackName}-BuildGlueModules
ServiceRole: !Ref CodeBuildRole
Source:
Type: CODEPIPELINE
BuildSpec: !Sub |
version: 0.2
phases:
install:
runtime-versions:
python: 3.8
pre_build:
commands:
- python3 setup.py bdist_wheel
build:
commands:
- aws s3 sync ./dist/ s3://my-bucket/glue_modules
为了加快 ETL 作业的执行速度,我在 Cython“regression.pyx” 而不是 python 中实现了回归算法。
遗憾的是,我找不到任何文档,说明如何正确集成到 AWS Glue 作业中。
我想在 python 粘合作业中导入 Cython 回归模块,如下所示:
from regression import reg
通常,Cython 脚本必须使用setup.py 脚本构建,然后才能导入。在 AWS glue 作业中正确集成的最佳方法是什么?
如有任何帮助,我们将不胜感激。
您可以在创建作业时指定外部库位置。
您只需将 .zip 或 .whl 文件上传到 S3 并指定路径。
更多信息here。
我的 CodePipeline 的构建规范:
BuildGlueModules:
Type: AWS::CodeBuild::Project
Properties:
Artifacts:
Type: CODEPIPELINE
Environment:
ComputeType: BUILD_GENERAL1_MEDIUM
Image: aws/codebuild/standard:4.0
Type: LINUX_CONTAINER
Name: !Sub ${AWS::StackName}-BuildGlueModules
ServiceRole: !Ref CodeBuildRole
Source:
Type: CODEPIPELINE
BuildSpec: !Sub |
version: 0.2
phases:
install:
runtime-versions:
python: 3.8
pre_build:
commands:
- python3 setup.py bdist_wheel
build:
commands:
- aws s3 sync ./dist/ s3://my-bucket/glue_modules