" ImportError:没有名为pyRserve"的模块在运行AWS Glue作业时

时间:2018-01-21 13:09:15

标签: python amazon-web-services apache-spark aws-glue

当我运行我尝试导入pyRserve python模块(纯Python)的Glue作业时,我收到此错误:

LogType:stdout
Log Upload Time:Sun Jan 21 12:27:32 +0000 2018
LogLength:206
Log Contents:
Traceback (most recent call last):
File "script_2018-01-21-12-27-05.py", line 8, in <module>
import pyRserve
ImportError: No module named pyRserve
End of LogType:stdout

以下是我的工作细节:

$ aws glue get-job --job-name test_trunc
{
    "Job": {
        "Name": "test_trunc",
        "Role": "arn:aws:iam::#CLIPPED#:role/AWSGlueServiceRoleDefault",
        "CreatedOn": 1516192543.117,
        "LastModifiedOn": 1516537317.889,
        "ExecutionProperty": {
            "MaxConcurrentRuns": 1
        },
        "Command": {
            "Name": "glueetl",
            "ScriptLocation": "s3://#CLIPPED#/gluescripts/test_trunc"
        },
        "DefaultArguments": {
            "--TempDir": "s3://#CLIPPED#/jobs/test_trunc/scripts",
            "--extra-py-files": "s3://#CLIPPED#/jobs/test_trunc/python-libs/pyRserve.zip",
            "--job-bookmark-option": "job-bookmark-disable",
            "--job-language": "python"
        },
        "Connections": {
            "Connections": [
                "redshift"
            ]
        },
        "MaxRetries": 0,
        "AllocatedCapacity": 10
    }
}

以下是我正在运行的脚本:

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
import pprint
import pyRserve

这是完整的日志:

https://gist.github.com/mattazend/b611d0232d94ade4bc4c16bcb79f73a8

2 个答案:

答案 0 :(得分:0)

您是否在S3中使用了一个zip文件作为您要导入的库,建议here

答案 1 :(得分:0)

  

根据AWS Glue文档:

     

只能使用纯Python库。依赖C的图书馆   扩展,例如pandas Python数据分析库,不是   但支持。

我认为即使我们将python库作为zip文件上传,如果您使用的库具有C扩展的依赖项,它也不会起作用。我曾尝试过像你尝试过的那样使用Pandas,Holidays等,并且在联系AWS Support时,他们提到它在他们的待办事项列表中(支持这些python库),但截至目前还没有ETA。

@Ishwr:根据此链接https://pypi.python.org/pypi/pyRserve/0.9.1,pyRserve需要Numpy包作为安装的先决条件,如果在已安装的库列表中找不到numpy,则pyRserve首先安装在进入pyRserve之前就已经过了。

由于Glue不支持numpy,我相信由于这个原因,pyRserve要么没有从zip文件安装,要么没有被识别/考虑用于作业,因此导致了ImportError。

  

pyRserve由Ralph Heinkel(www.ralph-heinkel.com)编写   在麻省理工学院许可下发布。

     

快速安装确保已安装Numpy(版本1.4.x或   更高)。

     

然后从你的unix / windows命令行运行:

     

pip pyRserve对于手动安装,请下载tar.gz或zip   包。解压缩后,cd进入pyRserve目录并运行   从命令行安装python setup.py。

     

实际上pip pyRserve如果缺少则应该安装numpy。

希望是对的。

感谢。