Cassandra的Python UDF

时间:2016-01-22 17:25:10

标签: python cassandra

我似乎无法在网上找到任何示例。 Cassandra 3.0 supports UDF and UDA可以用Java,Python或其他语言编写。

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

1 个答案:

答案 0 :(得分:2)

你不清楚你是否想要使用类似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