在Redshi中创建python UDF时出错

2024-04-16 11:35:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在amazonredshift中创建Python自定义项,我已经成功地创建了这个自定义项,没有任何错误。我还成功地为这个自定义项创建了所需的库。但是当我执行UDF时,我得到了一个错误:

No Module Named pyffx. Please look at svl_udf_log for more information

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

https://pypi.org/project/pyffx/#files

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;

Tags: noorgsrcpypiawsvalue错误iam
1条回答
网友
1楼 · 发布于 2024-04-16 11:35:40

我设法让它工作。。。某种程度上。你知道吗

我做了以下工作:

  • 通过您提供的链接下载了pyffx
  • 提取.tar.gz文件并创建.zip个文件
  • .zip文件复制到amazons3
  • 使用CREATE LIBRARY命令加载库
  • 创建函数

但是,当我使用函数时,我收到错误:

Invalid operation: AttributeError: 'module' object has no attribute 'add_metaclass'

我的研究表明six库(提供python2和pytho3兼容性)是这个问题的根源。Python Language Support for UDFs - Amazon Redshift页表示six 1.3包含在红移中,而Pip six.add_metaclass error表示此版本不包含add_metaclass。当前版本的six是1.12。你知道吗

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

相关问题 更多 >