当我运行我尝试导入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
答案 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。
希望是对的。
感谢。