在 Snaplogic Sc​​ript Snap 中使用第三方库

Using Third Party Libraries in Snaplogic Script Snap

我正在尝试使用脚本快照创建一个 python 脚本来向 Cassandra 集群发出批处理请求(Cassandra 脚本由于某种原因不支持批处理操作),我需要一种方法来使用 'cassandra' 库

我查看了文档以找到一种导入 python 库的方法,这些库不是默认的东西,比如随机的,但我找不到这样做的方法。

我使用的具体导入行是

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

但这显然不起作用,因为 python 的 Cassandra 库没有安装在 SnapLogic 上。我没有能力(据我所知)在 SnapLogic 上安装库。如果相关,我得到的具体错误是:

Failure: Cannot evaluate Script file: SQL_Demo_Cassandra_Script.py, Reason: ImportError: No module named cassandra in at line number 5, Resolution: Please fix the script file error at line: 5 column: -1

当你在 Script snap 中 select Python 时,它实际上意味着 Jython 。所以,基本上,您可以在脚本中导入 Java 类。

因此,您需要获取 Cassandra 的驱动程序(一个 JAR 文件)并将其上传到所有 plex 节点,并确保将其保存在所有节点上的相同路径中。

然后就可以将JAR文件添加到脚本中的路径中,导入需要的类.

注:我没在SnapLogic里试过

请参考 Whosebug 问题 - Importing jars from Jython


更新#1:

看起来这是使用第三方库的推荐方式。

来自 SnapLogic 文档:

While SnapLogic does not support importing third party libraries directly using the Script Snap, you can add their package/JAR files in a directory in your Groundplex nodes and then import them using this Snap.

For example, consider that you have added the JAR file, sample.jar, in the directory /opt/snaplogic/ext_jar/. Include the following statements in the script that you are running in the Script Snap to import this library:

import sys
# more code
sys.path.append('/opt/snaplogic/ext_jar/sample.jar')
# more code

限制:

  • If you are using multiple Groundplex nodes then you must add the package/JAR files in each of those nodes.
  • You can import third party libraries only on Groundplex nodes.

参考- SnapLogic Docs - Script Snap