AWS 在线开发端点抛出 importerror no module named aws glue.transforms

AWS online Development endpoint throws importerror no module named aws glue.transforms

我正在尝试 运行 使用 python 脚本在 AWS glue 中进行 ETL 作业

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

glueContext = GlueContext(SparkContext.getOrCreate())

person = glueContext.create_dynamic_frame.from_catalog(
           database="test",
           table_name="testetl_person")

person.printSchema()

此脚本在 AWS 开发端点 运行ning 并且在 运行ning 作业时抛出以下异常

File "/tmp/runscript.py", line 118, in <module>
runpy.run_path(temp_file_path, run_name='__main__')
File "/usr/local/lib/python3.6/runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "/usr/local/lib/python3.6/runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "/usr/local/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/tmp/glue-python-scripts-cf4xyag5/test.py", line 2, in <module>
ModuleNotFoundError: No module named 'awsglue.transforms'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/tmp/runscript.py", line 137, in <module>
raise e_type(e_value).with_tracsback(new_stack)
AttributeError: 'ModuleNotFoundError' object has no attribute 'with_tracsback'

谁能帮帮我? 如果您需要更多信息,请告诉我。

根据 This,您 运行 代码的语言应设置为 spark,而不是 python。

如果您 运行 在 sagemaker notebook 上使用 Glue 开发端点进行 spark,这可能是一个权限问题,如此 aws 论坛 thread

Glue 开发端点需要以下 IAM 策略才能从 AWS 提供的 S3 存储桶下载所需的 awsglue library

arn:aws:iam::aws:policy/service-role/AWSGlueServiceNotebookRole

您可能 select 编辑了 python 笔记本而不是 pyspark 笔记本。

你必须 select 一个 pyspark 笔记本。

对此并非 100%

一个可能的解决方案是:

  1. 1。删除您的开发端点
  2. 2。将 AWSGlueServiceRole 添加到您将使用
  3. 创建新端点的角色
  4. 3。创建一个新的开发端点

我不知道发生了什么,但我通过不设置 vpn 解决了这个问题。您可以在 link:https://aws-dojo.com/ws8/labs/developer-endpoint/

之后创建所有内容