AWS Glue: ModuleNofFoundError



在我的glue脚本(Spark 3.1, Python 3, glue 3)中,我试图使用熊猫库中的df.to_excel()函数。显然,pandas库依赖于openpyxl。我的代码是:

import sys
import boto3
import openpyxl
import pandas as pd
client = boto3.client('s3')
obj = client.get_object(Bucket = 'myBucketName', Key = 'myFileName.csv')
df = pd.read_csv(obj['Body'])
df.to_excel("output.xlsx", sheet_name='my-sheet-name')

问题是我得到错误:ModuleNotFoundError: No module named 'openpyxl'

我发现下面的链接解释了如何添加外部python库:
https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html create-python-extra-library
使用Pandas AWS Glue Python Shell作业显然我做错了什么,因为它不适合我。我的步骤是:

  1. 本地创建setup.py文件:

    from setuptools import setup

    设置(name ="openpyxl"version ="3.0.7"install_requires =("openpyxl"))

  2. 在我的本地目录py setup.py develop执行(我在Windows上,我的python版本是3.9.7)

  3. 在我的本地目录py setup.py bdist_egg执行

  4. 复制文件../dist/openpyxl-3.0.7-py3.9.egg到我的s3桶

  5. 在我的胶水工作,我把文件位置在Python library path


我哪里做错了?我错过了什么?
提前感谢!

在较新的胶水版本中,您可以跳过蛋/轮方法并在运行时安装。在作业参数中输入关键字"——additional-python-modules"并在值中放入"openpyxl, pandas"

https://aws.amazon.com/blogs/big-data/building-python-modules-from-a-wheel-for-spark-etl-workloads-using-aws-glue-2-0/

相关内容

  • 没有找到相关文章

最新更新