在snaplogic脚本snap中使用第三方库

kmpatx3s  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(423)

我正在尝试使用脚本快照创建一个python脚本,以向cassandra集群发出批处理请求(cassandra脚本由于某些原因不支持批处理操作),我需要一种使用“cassandra”库的方法
我在文档中查找了一种导入python库的方法,这些库不是像random这样的默认库,但是我找不到任何方法。
我使用的具体导入行是

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider

但这显然不起作用,因为snaplogic上没有安装用于python的cassandra库。我没有能力(afaik)在snaplogic上安装库。如果相关,我得到的具体错误是:
失败:无法计算脚本文件:sql\u demo\u cassandra\u script.py,原因:importerror:第5行中没有名为cassandra的模块,解决方法:请修复第5行列中的脚本文件错误:-1

f4t66c6m

f4t66c6m1#

在脚本snap中选择python实际上意味着jython。因此,基本上可以在脚本中导入java类。
因此,您需要获取cassandra的驱动程序(一个jar文件)并将其上载到所有的plex节点,并确保将其保存在所有节点上的相同路径中。
然后可以将jar文件添加到脚本中的路径,并导入所需的类。
注意:我从未在snaplogic中尝试过。
请参考stackoverflow问题-从jython导入JAR
更新#1:
看起来这是使用第三方库的推荐方法。
从snaplogic文档:
虽然snaplogic不支持使用脚本snap直接导入第三方库,但您可以将它们的包/jar文件添加到groundplex节点的目录中,然后使用此snap导入它们。
例如,假设您添加了jar文件, sample.jar ,在目录中 /opt/snaplogic/ext_jar/ . 在脚本快照中运行的脚本中包含以下语句以导入此库:

import sys

# more code

sys.path.append('/opt/snaplogic/ext_jar/sample.jar')

# more code

限制:
如果您使用多个groundplex节点,那么必须在每个节点中添加包/jar文件。
只能在groundplex节点上导入第三方库。
请参阅-snaplogic docs-script snap

相关问题