Ven*_*nky 5 cassandra cassandra-2.0 cassandra-2.1
我无法在网上找到这个.如何在cassandra中创建自定义用户定义函数?
对于Ex:
CREATE OR REPLACE FUNCTION customfunc(custommap map<text, int>)
CALLED ON NULL INPUT
RETURNS map<int,bigint>
LANGUAGE java AS 'return MyClass.mymethod(custommap);';
Run Code Online (Sandbox Code Playgroud)
"MyClass"是哪个类我可以在Classpath中注册?
1. 首先构建包含您的类的 java 项目。请记住,您必须将包名称添加到您的类中。
例子 :
package exp;
import java.lang.Math;
import java.util.*;
public class MyClass
{
public static Map<Integer,Long> mymethod(Map<String, Integer> data) {
Map<Integer,Long> map = new HashMap<>();
map.put(1, 10L);
map.put(2, 20L);
map.put(3, 30L);
return map;
}
}
Run Code Online (Sandbox Code Playgroud)
编译和构建后我有了 jartest.jar
2.将jar文件复制到所有cassandra节点的$CASSANDRA_HOME/lib目录中
3.重启所有Cassandra节点
4. 创建您的自定义函数
例子 :
CREATE OR REPLACE FUNCTION customfunc(custommap map<text, int>)
CALLED ON NULL INPUT
RETURNS map<int,bigint>
LANGUAGE java
AS 'return exp.MyClass.mymethod(custommap);';
Run Code Online (Sandbox Code Playgroud)
现在您可以使用该功能:
cassandra@cqlsh:test> SELECT * FROM test_fun ;
id | data
----+------------------
1 | {'a': 1, 'b': 2}
(1 rows)
cassandra@cqlsh:test> SELECT customfunc(data) FROM test_fun ;
test.customfunc(data)
-----------------------
{1: 10, 2: 20, 3: 30}
(1 rows)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2161 次 |
| 最近记录: |