【问题标题】:How to import RateLimiter in AWS Glue Python如何在 AWS Glue Python 中导入 RateLimiter
【发布时间】:2021-02-10 11:39:52
【问题描述】:

我想为从我的 python 脚本粘合作业到 DDB 的调用添加一个速率限制器,并减轻它的调用量峰值。我实现了类似以下内容,就像https://pypi.org/project/ratelimiter/ 中建议的那样:

from ratelimiter import RateLimiter

rate_limiter = RateLimiter(max_calls=10, period=1)

for i in range(100):
    with rate_limiter:
        do_something()

但出现以下异常:

rmation.doAs(UserGroupInformation.java:1844) at org.apache.spark.deploy.yarn.ApplicationMaster.doAsUser(ApplicationMaster.scala:778) at org.apache.spark.deploy.yarn.ApplicationMaster.run(ApplicationMaster .scala:244) at org.apache.spark.deploy.yarn.ApplicationMaster$.main(ApplicationMaster.scala:803) at org.apache.spark.deploy.yarn.ApplicationMaster.main(ApplicationMaster.scala) 原因:org .apache.spark.SparkUserAppException:用户应用程序在 org.apache.spark.deploy.PythonRunner.main(PythonRunner.scala) 的 org.apache.spark.deploy.PythonRunner$.main(PythonRunner.scala:106) 处以 1 退出sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method。在 org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:684) 21/02/10 03:05:08 处调用(Method.java:498) 信息ApplicationMaster:删除暂存目录 hdfs://20.0.18.119:8020/user/root/.sparkStaging/application_1612925905975_0002 21/02/10 03:05:08 INFO ShutdownHookManager: 称为 End of LogType:stderr LogType:stdout 日志上传时间的关闭挂钩:2 月 10 日星期三 03:05:10 +0000 2021 LogLength:253 日志内容:解析纱线日志得到错误消息:ModuleNotFoundError: No module named 'ratelimiter' Traceback(最近一次调用最后一次):文件“script_2021-02-10-03 -04-33.py",第 10 行,从 ratelimiter import RateLimiter ModuleNotFoundError: No module named 'ratelimiter' End of LogType:stdout

如何导入 ratelimiter?

谢谢!

【问题讨论】:

  • ratelimiter 不是标准的 Python 模块。您是否按照here 的说明添加了它?
  • 很高兴它成功了。如果您不介意我可以提供更多信息的答案?
  • 当然可以。谢谢@Marcin!然后我会删除我的

标签: java python amazon-web-services aws-glue rate-limiting


【解决方案1】:

基于 cmets。

ratelimiter 不是标准的 python 库。因此,默认情况下 它在胶水作业中不可用。然而,我们可以 将外部库添加到作业中,如下所述:

添加外部库的过程涉及三个步骤

  1. 使用库创建 .zip 文件(除非库包含在单个 .py 文件中)。

  2. 将 zip 文件上传到 S3。

  3. 在作业或作业运行中使用库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    • 2019-12-18
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多