awsglue.context 导入 GlueContext 的导入错误

Fen*_*tik 6 python pyspark aws-glue

我最近安装了 python 3.7 并尝试使用 pyspark,我需要创建

\n\n
    glueContext = GlueContext(SparkContext.getOrCreate())\n    sparkSession = glueContext.spark_session\n
Run Code Online (Sandbox Code Playgroud)\n\n

为此,当我导入库时,它只是找不到动态框架

\n\n

当我尝试导入时awsglue.context import GlueContext出现以下错误

\n\n
from awsglue.context import GlueContext\nTraceback (most recent call last):\n  File "<stdin>", line 1, in <module>\n  File "/usr/local/lib/python3.7/site-packages/awsglue/__init__.py", line 13, in <module>\n    from dynamicframe import DynamicFrame\nModuleNotFoundError: No module named \'dynamicframe\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

即使这个也失败了

\n\n
from awsglue.transforms import *\nTraceback (most recent call last):\n  File "<stdin>", line 1, in <module>\n  File "/usr/local/lib/python3.7/site-packages/awsglue/__init__.py", line 13, in <module>\n    from dynamicframe import DynamicFrame\nModuleNotFoundError: No module named \'dynamicframe\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

Pyspark模块导入好像没有问题from pyspark.context import SparkContext

\n\n

没有关于如何设置所需库的适当文档。

\n\n

下的文件夹结构 /usr/local/lib/python3.7/site-packages/awsglue

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __pycache__\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 context.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data_sink.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data_source.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 functions.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gluetypes.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 job.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 utils.cpython-37.pyc\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 context.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data_sink.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data_source.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 devutils.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dynamicframe.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 functions.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gluetypes.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 job.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 transforms\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __pycache__\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 apply_mapping.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 collection_transforms.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dynamicframe_filter.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dynamicframe_map.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 errors_as_dynamicframe.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 field_transforms.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 relationalize.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 resolve_choice.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 transform.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 unbox.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 unnest_frame.cpython-37.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 apply_mapping.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 collection_transforms.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 drop_nulls.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dynamicframe_filter.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dynamicframe_map.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 errors_as_dynamicframe.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 field_transforms.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 relationalize.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 resolve_choice.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 transform.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 unbox.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 unnest_frame.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 utils.py\n
Run Code Online (Sandbox Code Playgroud)\n