cassandra - 在 Snaplogic Script 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
解决方案
当您在脚本快照中选择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 节点上导入第三方库。
推荐阅读
- user-defined-functions - 如何在 UDF 中指定数据库名称?
- python - 在 Python 中使用带有 Selenium 的 webdriver 时找不到元素
- ruby-on-rails - Rails - 如何忽略嵌套对象的验证?
- android - 当应用程序在后台时无法处理点击
- python - 从 numpy 数组中获取坐标
- javascript - 如何将 Javascript 元素放入 CSS 背景图像
- tensorflow - 关于Tensorflow Dense Layer实现的问题
- typescript - 为什么打字稿命名空间已经过时了?
- javascript - 如何在单击时切换数组?
- c# - Dns.GetHostByName/Resolve 别名列表为空