当前位置: 首页 > 知识库问答 >
问题:

用于Cassandra的Python UDF

雍嘉勋
2023-03-14

我似乎在网上找不到任何例子。Cassandra 3.0支持可以用Java、Python或其他语言编写的UDF和UDA。

如何设置Python中定义的UDF或UDA(我指的是Python函数,而不是通过Python驱动程序在Java或Javascript中定义的函数)?

共有1个答案

尹弘壮
2023-03-14

您的问题并不清楚您是想使用类似python驱动程序的东西来定义UDF、UDA,还是想用python语言定义UDF,但这可能会引导您朝着正确的方向前进。

我在这里的python-driver的test_metadata.py中发现了以下示例。

https://github.com/datastax/python-driver/blob/master/tests/integration/standard/test_metadata.py#L448

javascript中的UDF示例

session.execute("""CREATE FUNCTION {0}.sum_int(key int, val int)
                            RETURNS NULL ON NULL INPUT
                            RETURNS int
                            LANGUAGE javascript AS 'key + val';""".format(keyspace_name))

我相信您可以通过更改上面的语言参数来切换函数实际写入的语言。

这里是Java中函数声明的一个例子。

session.execute("""CREATE OR REPLACE FUNCTION update_map(s map<int, int>, i int)
                               RETURNS NULL ON NULL INPUT
                               RETURNS map<int, int>
                               LANGUAGE java AS 's.put(new Integer(i), new Integer(i)); return s;';""")

UDA示例

session.execute("""CREATE AGGREGATE {0}.sum_agg(int)
                             SFUNC sum_int
                             STYPE int
                             INITCOND 0"""
                             .format(self.keyspace_name))

这里还有一篇博客文章可以参考。http://www.datastax.com/dev/blog/cassandra-user-defined-functions-python-driver

 类似资料:
  • 我为我的spring boot应用程序开发集成测试,该应用程序与Cassandra一起工作。我使用与Cassandra通信。 有什么方法可以将Testcontainers Cassandra与Spring数据一起用于Apache Cassandra吗?

  • Cassandra源代码是最新的,它是从git@github.com: apache/cassandra.git.克隆的 JDK版本是1.8.0_05 操作系统:Linux 3.13.0-62-generic#102 Ubuntu SMP 后来,我尝试使用不同的JDK版本编译它,发现jdk1.8。0_11仍然有同样的问题,但是从jdk1.8开始。0_20,这个问题已经修复。 我想问是什么导致了这个

  • 当我试图查找关于复合列的信息时,我找不到比2013年更新的信息(特别是这个是Google的顶部链接,它在谈到使用复合列时没有CQL代码,显然使用了非常旧的Java驱动程序)。Cassandra的新版本中还存在复合列吗?我是说,除了有组合键。 我是Cassandra的新手,实际上我想知道它们是否适合我的用例,如下所述。考虑一个有4个双值列的表,比如< code>w,< code>x,< code>y

  • 我有一个简单的实体,我想让“createdDate”自动分配。 同样在文档中描述的,我还在CassandraConfig中添加了注释“@EnableCassandra Auditing”: 但它仍然不起作用。实体是用createdDate=null创建的。感谢您的帮助。

  • 文件中说: |格雷普·卡桑德拉·苏多杀戮 使用:ps auwx | grep cassandra 结果为50行或更多,如何选择正确的数字: /usr/lib/jvm/java-7-openjdk-amd64/bin/java -ea -javaagent:/usr/share/cassandra/lib/jamm-0.2.6.jar -XX: CMSClassUnloadingEnabled -X