在我的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作业显然我做错了什么,因为它不适合我。我的步骤是:
本地创建setup.py文件:
from setuptools import setup
设置(name ="openpyxl"version ="3.0.7"install_requires =("openpyxl"))
在我的本地目录
py setup.py develop
执行(我在Windows上,我的python版本是3.9.7)在我的本地目录
py setup.py bdist_egg
执行复制文件
../dist/openpyxl-3.0.7-py3.9.egg
到我的s3桶在我的胶水工作,我把文件位置在
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/