将 Python 库与 一起使用Amazon连接词 - Amazon连接词
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Python 库与 一起使用Amazon连接词

AmazonGlue 允许您安装额外的 Python 模块和库,以便与AmazonETL Glue 附记录

在中安装其他 Python 模块AmazonGlue 附 2.0 与点

AmazonGlue 使用 Python 软件包安装程序 (ip3) 来安装其他模块,以供AmazonETL Glue 附记录 您可以将--additional-python-modules选项,以添加新模块或更改现有模块的版本。您可以传递由python-modules-installer-option来安装模块。ip3 的任何不兼容或限制都将适用。

例如,要更新或添加新的scikit-learn模块使用以下键/值:"--additional-python-modules", "scikit-learn==0.21.3"

此外,在--additional-python-modules选项,您可以指定 Python 滚轮模块的 Amazon S3 路径。例如:

--additional-python-modules s3://aws-glue-native-spark/tests/j4.2/ephem-3.7.7.1-cp37-cp37m-linux_x86_64.whl,s3://aws-glue-native-spark/tests/j4.2/fbprophet-0.6-py3-none-any.whl,scikit-learn==0.21.3

您可以指定--additional-python-modules选项DefaultArguments或者NonOverridableArguments作业参数或作业参数字段AmazonGlue 控制台。

中已提供的 Python 模块AmazonGlue 版本 2.0

AmazonGlue 2.0 版支持以下 Python 模块开箱即用:

  • 肉毒杆菌 =1.12.4

  • Botore=1.15.4

  • 认证

  • Catt=3.0.4

  • 循环员 =0.10.0

  • 赛顿 =0.29.15

  • 文档 =0.15.2

  • 枚举 34 =1.1.9

  • Fsspec=0.6.2

  • IDNA = = 2.9

  • jmespath=0.9.4

  • Job =0.14.1

  • 猕猴桃 =1.1.0

  • Matplotlt=3.1.3

  • mmath=1.1.0

  • 数字 = 1.18.1

  • 熊猫 =1.0.1

  • 模式 = 0.5.1

  • pmdarima=1.5.3

  • pvsd==4.3.2

  • 焦黄 =0.16.0

  • Pydevd==1.9.0

  • 毕霍肯 =0.3.54

  • PyMySql =0.9.3

  • PyParquet =2.4.6

  • Python 日期实例 =2.8.1

  • 比特兹

  • 请求 = 2.23.0

  • Slue = 0.4.0

  • 转移 = 0.3.3

  • 学习学习 = 0.22.1

  • scipy=1.4.1

  • 设置工具 =45.2.0

  • 设置工具 =45.2.0

  • 六 ==1.14.0

  • 统计模型 =0.11.1

  • 子处理程序

  • 症状 ==1.5.1

  • tbats=1.0.9

  • 城市数据库 = 1.25.8

压缩库以用于包含

除非库包含在单个 .py 文件中,否则它应打包到 .zip 存档中。包目录应该位于存档文件的根部,并且必须包含一个针对该包的 __init__.py 文件。然后,Python 将能够以正常方式导入包。

如果您的库仅在一个 .py 文件中包含单个 Python 模块,您无需将其放入 .zip 文件。

在开发终端节点中加载 Python 库

如果对不同的 ETL 脚本使用不同的库集,则可以为每个集设置单独的开发终端节点,也可以覆盖每次您切换脚本时开发终端节点加载的库 .zip 文件。

在创建开发终端节点时,您可以使用控制台为其指定一个或多个库 .zip 文件。分配名称和 IAM 角色后,选择脚本库和作业参数(可选)并输入您的库的完整 Amazon S3 路径.zip中的Python 库路径。例如:

s3://bucket/prefix/site-packages.zip

如果需要,您可以指定文件的多个完整路径并使用逗号分隔,但不能有空格,如下所示:

s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip

如果您更新这些 .zip 文件,则可以使用控制台将其重新导入到您的开发终端节点。导航到所涉开发人员终端节点,选中它旁边的框,然后从 Action 菜单中选择 Update ETL libraries

类似地,您可以使用AmazonGlue 记录 当您通过调用 CreateDevEndpoint 操作 (Python:create_dev_endpoint) 创建开发终端节点时,可以通过如下所示的调用在 ExtraPythonLibsS3Path 参数中指定库的一个或多个完整路径:

dep = glue.create_dev_endpoint( EndpointName="testDevEndpoint", RoleArn="arn:aws:iam::123456789012", SecurityGroupIds="sg-7f5ad1ff", SubnetId="subnet-c12fdba4", PublicKey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtp04H/y...", NumberOfNodes=3, ExtraPythonLibsS3Path="s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip")

当您更新一个开发终端节点时,还可以通过在调用 UpdateDevEndpoint (update_dev_endpoint) 时使用 DevEndpointCustomLibraries 对象并将 UpdateEtlLibraries 参数设置为 True 来更新它所加载的库。

如果您将 Zeppelin Notebook 与开发终端节点一起使用,则在从 .zip 文件中导入一个或多个包之前,需要调用以下 PySpark 函数:

sc.addPyFile("/home/glue/downloads/python/yourZipFileName.zip")

在作业或作业运行中使用 Python 库

当您在控制台上创建新 Job 时,可以通过选择脚本库和作业参数(可选)并按照创建开发终端节点时的方式输入完整 Amazon S3 库路径:

s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip

如果您正在调用 CreateJob (create_job),则可以使用 --extra-py-files 默认参数指定默认库的一个或多个完整路径,如下所示:

job = glue.create_job(Name='sampleJob', Role='Glue_DefaultRole', Command={'Name': 'glueetl', 'ScriptLocation': 's3://my_script_bucket/scripts/my_etl_script.py'}, DefaultArguments={'--extra-py-files': 's3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip'})

然后,当您启动作业运行时,可以使用其他设置覆盖默认库设置:

runId = glue.start_job_run(JobName='sampleJob', Arguments={'--extra-py-files': 's3://bucket/prefix/lib_B.zip'})