首页 > 解决方案 > 在 Snaplogic Sc​​ript Snap 中使用第三方库

问题描述

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

我查看了文档以找到一种导入非默认事物(如随机)的 python 库的方法,但我找不到这样做的方法。

我正在使用的具体导入行是

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

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

失败:无法评估脚本文件:SQL_Demo_Cassandra_Script.py,原因:ImportError:第 5 行没有名为 cassandra 的模块,解决方法:请修复第 5 行的脚本文件错误:-1

标签: cassandrasnaplogicsnaplogic-script-snap

解决方案


当您在脚本快照中选择Python时,它实际上意味着Jython。因此,您基本上可以在脚本中导入 Java 类。

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

然后您可以将 JAR 文件添加到脚本中的路径并导入所需的类。

注意:我从未在 SnapLogic 中尝试过。

请参考 StackOverflow 问题 - Importing jars from Jython


更新#1:

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

来自 SnapLogic 文档:

虽然 SnapLogic 不支持直接使用 Script Snap 导入第三方库,但您可以将它们的包/JAR 文件添加到 Groundplex 节点的目录中,然后使用此 Snap 导入它们。

例如,假设您sample.jar在目录中添加了 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


推荐阅读