在 redshift UDF 中导入 jellyfish 模块

Posted

技术标签:

【中文标题】在 redshift UDF 中导入 jellyfish 模块【英文标题】:import jellyfish module in redshift UDF 【发布时间】:2017-11-09 16:01:12 【问题描述】:

Redshift - python UDF 可以导入内置以及几个重要的模块。但我有一个需要“水母”模块的功能。

我尝试执行此处提到的步骤...

http://docs.aws.amazon.com/redshift/latest/dg/udf-python-language-support.html#udf-importing-custom-python-library-modules

但我想,在 redshift UDF 中导入模块一定更容易。如何在 redshift 中导入第三方模块?

【问题讨论】:

【参考方案1】:

这是正确的方法。您必须先导入库,然后您的 UDF 才能使用它。粗略示例(未测试):

CREATE LIBRARY jellyfish LANGUAGE plpythonu FROM 's3://…

CREATE OR REPLACE FUNCTION f_jellyfish_levenshtein (a varchar, b varchar) RETURNS int IMMUTABLE as $$ 
    import jellyfish
    jellyfish.levenshtein_distance(a, b)

    return LineSegment(x1, y1, x2, y2).distance()
$$ LANGUAGE plpythonu;

请注意,Redshift UDF 目前不允许您执行 C/C++ Python 扩展,只能使用纯 Python 库。

【讨论】:

以上是关于在 redshift UDF 中导入 jellyfish 模块的主要内容,如果未能解决你的问题,请参考以下文章

在 Jython 的 Pig UDF 中导入外部库时出现错误 1121

如何在 Redshift(亚马逊)中更新 UDF?

我们应该在 Redshift 的存储过程中使用 udf

Redshift:不能在 UDF 中使用聚合函数?

在 Redshift 中创建 python UDF 时出错

redshift 更改 udf 更改所有者