Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在红移中创建python UDF时出错_Python_Amazon Web Services_Amazon Redshift_User Defined Functions - Fatal编程技术网

在红移中创建python UDF时出错

在红移中创建python UDF时出错,python,amazon-web-services,amazon-redshift,user-defined-functions,Python,Amazon Web Services,Amazon Redshift,User Defined Functions,我正在尝试在AmazonRedshift中创建PythonUDF,并且我已经成功地创建了UDF,没有任何错误。我还成功地为这个UDF创建了所需的库。但是当我执行UDF时,我得到了错误: 没有名为pyffx的模块。请查看svl_udf_日志了解更多信息 我已经从pypi.org下载了该库,并将其上传到AmazonS3。这是我用来下载库的链接: 我设法让它工作了。。。有点 我做了以下工作: 通过您提供的链接下载pyffx 提取.tar.gz文件,并创建文件的.zip 将.zip文件复制到Amaz

我正在尝试在AmazonRedshift中创建PythonUDF,并且我已经成功地创建了UDF,没有任何错误。我还成功地为这个UDF创建了所需的库。但是当我执行UDF时,我得到了错误:

没有名为pyffx的模块。请查看svl_udf_日志了解更多信息

我已经从
pypi.org
下载了该库,并将其上传到AmazonS3。这是我用来下载库的链接:


我设法让它工作了。。。有点

我做了以下工作:

  • 通过您提供的链接下载pyffx
  • 提取
    .tar.gz
    文件,并创建文件的
    .zip
  • .zip
    文件复制到Amazon S3
  • 使用
    创建库
    命令加载库
  • 创建函数
但是,当我使用该函数时,我收到错误:

无效操作:AttributeError:“模块”对象没有属性“添加元类”

我的研究表明
six
库(提供Python 2和3兼容性)是这个问题的根源。该页面表明红移中包含了
six 1.3
,但表示该版本不包含
add\u元类
。当前版本的
six
为1.12


我试图在代码中包含一个更新的
six
库,但没有成功。你也许能比我更善于争吵。

我设法让它起作用了。。。有点

我做了以下工作:

  • 通过您提供的链接下载pyffx
  • 提取
    .tar.gz
    文件,并创建文件的
    .zip
  • .zip
    文件复制到Amazon S3
  • 使用
    创建库
    命令加载库
  • 创建函数
但是,当我使用该函数时,我收到错误:

无效操作:AttributeError:“模块”对象没有属性“添加元类”

我的研究表明
six
库(提供Python 2和3兼容性)是这个问题的根源。该页面表明红移中包含了
six 1.3
,但表示该版本不包含
add\u元类
。当前版本的
six
为1.12


我试图在代码中包含一个更新的
six
库,但没有成功。你可能比我更能争论。

执行
create library pyffx
命令时没有出错吗?而且,您可能会将您的实际IAM角色放在
凭证
行中?您是否将
pyffx-0.3.0.tar.gz
文件转换为
.zip
格式?是的,创建库pyffx执行时没有错误。是的,我已将实际IAM角色放在凭据中。是的,我使用下面的在线转换器工具将.tar.gz转换为.zip。
create library pyffx
命令是否正确执行?而且,您可能会将您的实际IAM角色放在
凭证
行中?您是否将
pyffx-0.3.0.tar.gz
文件转换为
.zip
格式?是的,创建库pyffx执行时没有错误。是的,我已将实际IAM角色放在凭据中。是的,我使用下面的在线转换器工具将.tar.gz转换为.zip。我上传了六个库到红移,并在我的代码中导入了六个库,我仍然得到相同的错误:“没有模块pyffx”。创建或替换函数schema.ffx(src VARCHAR)返回VARCHAR稳定为$$import pyffx src=unicode(src)value=(src)l=len(value)e=pyffx.String(b'secret-key',alphabet='abcedefghijklmnopqrstuvxyz123456789abdefhjjklmnopqrstuvxyz',length=l)返回e.encrypt(value)$$LANGUAGE plpythonu;您是如何上传
six
库的?当我试图为
six
创建库时,它抱怨它已经存在。以其他名称加载库不会更改我的错误消息。我遵循创建pyffx库的相同过程。下载文件并加载到s3并创建Six库。但不允许创建与现有库同名的库。您是否使用了创建第六库?是的,我创建了第六库。我认为问题在于这个软件包的版本;pyffx与Python3兼容,但是Redshift使用的是Python2.7。你的想法是什么?我上传了六个库到红移,并在我的代码中导入了六个库,我仍然得到相同的错误:“没有模块pyffx”。创建或替换函数schema.ffx(src VARCHAR)返回VARCHAR稳定为$$import pyffx src=unicode(src)value=(src)l=len(value)e=pyffx.String(b'secret-key',alphabet='abcedefghijklmnopqrstuvxyz123456789abdefhjjklmnopqrstuvxyz',length=l)返回e.encrypt(value)$$LANGUAGE plpythonu;您是如何上传
six
库的?当我试图为
six
创建库时,它抱怨它已经存在。以其他名称加载库不会更改我的错误消息。我遵循创建pyffx库的相同过程。下载文件并加载到s3并创建Six库。但不允许创建与现有库同名的库。您是否使用了创建第六库?是的,我创建了第六库。我认为问题在于这个软件包的版本;pyffx与Python3兼容,但是Redshift使用的是Python2.7。你的想法是什么?
create library pyffx
language plpythonu
from 's3://aws-bucket/tmp/python_module/pyffx-0.3.0.zip'
credentials
'aws_iam_role=iam role'
region 'us-east-1';

CREATE OR REPLACE FUNCTION schema.ffx(src VARCHAR)
RETURNS VARCHAR
STABLE
AS $$
    import pyffx
    src = unicode(src)
    value=(src)
    l=len(value)
    e = pyffx.String(b'secret-key', alphabet='abcedefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', length=l)
    return e.encrypt(value)
$$ LANGUAGE plpythonu;