我正在尝试使用脚本快照创建python脚本,以向Cassandra集群发出批处理请求(由于某种原因,Cassandra脚本不支持批处理操作),我需要一种使用'cassandra'库的方法
我在文档中寻找了一种导入python库的方法,该库不是默认的东西,例如random,但是我找不到任何方法。
我正在使用的特定导入行是
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
但这显然不起作用,因为SnapLogic上未安装Python的Cassandra库。我没有能力(AFAIK)在SnapLogic上安装库。如果相关的话,我得到的具体错误是:
故障:无法评估脚本文件:SQL_Demo_Cassandra_Script.py,原因:ImportError:在第5行第5行,没有名为cassandra的模块。解决:请在第5行:-1处修复脚本文件错误。
答案 0 :(得分:1)
在脚本快照中选择 Python 时,实际上表示 Jython 。因此,基本上,您可以在脚本中导入Java类。
因此,您需要获取Cassandra的驱动程序(一个JAR文件)并将其上传到所有plex节点,并确保将其保存在所有节点上的相同路径中。
然后,您可以将JAR文件添加到脚本中的路径并导入所需的类。
注意:我从未在SnapLogic中尝试过。
请参考StackOverflow问题-Importing jars from Jython
更新#1:
看起来这是使用第三方库的推荐方法。
从SnapLogic文档中:
虽然SnapLogic不支持导入第三方库 直接使用脚本捕捉,您可以在其中添加其程序包/ JAR文件 Groundplex节点中的目录,然后使用此目录将其导入 捕捉。
例如,假设您在以下位置添加了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节点上导入第三方库。