在AWS Glue中使用geopandas导入时,可能会遇到“ModuleNotFoundError: No module named 'fiona._shim'”等错误。这是因为geopandas需要fiona和gdal库才能正常工作,而AWS Glue默认不包括这些库。 要解决此问题,请在AWS Glue中创建一个Python Wheel,其中包括geopandas、fiona和gdal库。 然后将Wheel上传到S3,并在AWS Glue作业脚本中安装该Wheel。 以下是一些示例代码可以帮助您创建和上传Python Wheel:
# 创建Python Wheel
!pip install wheel awscli
!mkdir -p geopandas-layer/python
!pip install -r requirements.txt -t geopandas-layer/python
!cd geopandas-layer && zip -r ../geopandas-layer.zip *
# 上传Python Wheel
!aws s3 cp geopandas-layer.zip s3://my-bucket/
然后,在AWS Glue作业脚本中,您可以使用以下代码安装并导入geopandas:
# 安装Python Wheel
!pip install geopandas-layer -t /tmp/geopandas-layer
import site
site.addsitedir('/tmp/geopandas-layer')
# 导入geopandas
import geopandas as gpd