【问题标题】:build and import a Cython module in AWS Glue job written in Python在用 Python 编写的 AWS Glue 作业中构建和导入 Cython 模块
【发布时间】:2021-04-09 15:23:15
【问题描述】:

为了加快 ETL 作业的执行,我在 Cython“regression.pyx”而不是 python 中实现了回归算法。

很遗憾,我找不到任何文档,说明如何正确集成到 AWS Glue 作业中。

我想在python粘合作业中导入Cython回归模块如下:

from regression import reg

通常,Cython 脚本必须使用 setup.py 脚本构建,然后才能导入。在 AWS 粘合作业中正确集成的最佳方法是什么?

任何帮助将不胜感激。

【问题讨论】:

    标签: python amazon-web-services cython aws-glue python-module


    【解决方案1】:

    您可以在创建作业时指定外部库位置。

    您只需将 .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
    

    【讨论】:

    • 感谢您的回复。我也想这样做。但是要导入 cython 脚本,您必须先使用 setup.py 文件构建它。知道如何使用 aws 胶水作业。
    • 这不可能只使用胶水。我构建了一个 AWS CodePipeLine,它从我的 Git 存储库中获取我的代码,运行 setup.py 并将构建文件夹复制到 S3。
    • 嗨,罗伯特,感谢您与我们联系,这似乎是个好主意。你能给我更多关于你的方法和实施的细节吗?提前谢谢你。
    • 我已经为 CloudFormation 添加了我的 CodePipeline sn-p。如果我可以帮助您,我们将不胜感激或接受我的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2022-12-03
    • 2019-02-21
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多