How to run an AWS Glue 1.0 Python Shell Job with the Current Version of boto3?(如何使用当前版本的boto3运行AWS Glue 1.0 Python Shell作业?)
本文介绍了如何使用当前版本的boto3运行AWS Glue 1.0 Python Shell作业?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要为AWS Glue Python3 shell作业使用较新的boto3包(Glue版本:1.0)。我将S3中的以下滚轮文件作为外部Python库包括在内:
boto3-1.13.21-py2.py3-none-any.whl
但是,即使我看到以下日志,boto3.__version__也会打印出1.9.203:
Successfully installed boto3-1.13.21 botocore-1.16.26 docutils-0.15.2 jmespath-0.10.0 python-dateutil-2.8.1 s3transfer-0.3.3 six-1.15.0 urllib3-1.25.10
由于某些原因,Glue Python Shell作业不允许我用轮子文件覆盖boto3包版本。有什么方法可以覆盖吗?
推荐答案
使用当前版本的boto3运行AWS Glue 1.0Python Shell作业的步骤。
- 从pip下载.whl文件的当前版本。
https://pypi.org/project/botocore/#files
https://pypi.org/project/boto3/#files
在我撰写此答案时,当前版本
- boto3-1.20.10-py3-one-any.wh.
- botocore-1.23.10-py3-one-any.whl
- 创建一个存储桶和文件夹,用于存储可能用于粘合Python作业的python WHL文件。
- s3://glue/python/lib/
- 将boto3和botocore WHL文件上载到步骤2中创建的S3存储桶中的新文件夹。
- s3://glue/python/lib/botocore-1.23.10-py3-none-any.whl,
- s3://glue/python/lib/boto3-1.20.10-py3-none-any.whl
创建一个Glue 1.0 Python shell作业,同时展开安全配置,在";Python库路径&q;中添加路径,路径之间用逗号分隔
s3://glue/python/lib/botocore-1.23.10-py3-none-any.whl,s3://glue/python/lib/boto3-1.20.10-py3-none-any.whl创建一个新的python脚本,并让它在脚本顶部删除预先导入的boto3包。
import sys sys.path.insert(0, '/glue/lib/installation') keys = [k for k in sys.modules.keys() if 'boto' in k] for k in keys: if 'boto' in k: del sys.modules[k]导入boto3
import boto3
这是我的最终模板通常的样子
import sys
sys.path.insert(0, '/glue/lib/installation')
keys = [k for k in sys.modules.keys() if 'boto' in k]
for k in keys:
if 'boto' in k:
del sys.modules[k]
import logging
import boto3
import botocore
def main():
handler = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(process)d: %(message)s')
handler.setFormatter(formatter)
logger = logging.getLogger("GlueLogger")
logger.setLevel(logging.INFO)
logger.addHandler(handler)
logger.info(f"Received sys.argv: {sys.argv}")
logger.info(f"Using boto3 api version:{boto3.__version__}")
if __name__ == "__main__":
main()
这篇关于如何使用当前版本的boto3运行AWS Glue 1.0 Python Shell作业?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:如何使用当前版本的boto3运行AWS Glue 1.0 Python Shell作业?
基础教程推荐
猜你喜欢
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
