python – 在redshift UDF中导入用户定义的库
在这里,我试图在redshift中导入我的用户定义的
python函数中的库
我创建了一个名为nltk的库,如下所示 [CREATE OR REPLACE LIBRARY nltk LANGUAGE plpythonu FROM 's3://nltk.zip' CREDENTIALS 'aws_access_key_id=*****;aws_secret_access_key=****';] 一旦创建,我试图在函数中导入它 CREATE OR REPLACE FUNCTION f_function (sentence varchar) RETURNS VARCHAR STABLE AS $$ from nltk import tokenize token = nltk.word_tokenize(sentence) return token $$LANGUAGE plpythonu; tokenize是nltk库中的子目录 但是当我尝试通过在表上调用它来运行该函数时 SELECT f_function(text) from table_txt; 我这样得到一个错误
任何人都可以帮助我在哪里做错了吗? 解决方法
首先,你的Python代码存在一个明显的问题:你永远不会导入nltk,然后调用nltk.word_tokenize.
其次,在下载nltk软件包之后,您需要压缩软件包内的模块文件夹并将此zip文件上传到RedShift. nltk-X.Y.zip ├─ setup.py ├─ requirements.txt ├─ nltk <- This is the folder that should be zipped and uploaded to S3 ... ├─ __init__.py ├─ tokenize.py RedShift只能加载模块 – 你的根文件夹应该有一个__init__.py文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |