首页 > 解决方案 > 如何在 apache cassandra 中创建 javascript udf

问题描述

我是 Apache Cassandra 和 javascript 的新手,我需要在 Apache Cassandra 中创建 javascript udf。我在 Cassandra 中创建了一个简单的 udf,但我无法在查询中调用该函数,弹出错误

这是与我的问题相关的所有详细信息

我的桌子看起来像这样

 id   | age | course | name    | sex
------+-----+--------+---------+--------
 st05 |  23 | b.tech |  nafees |   male
 st03 |  27 |    mca | lengdon |   male
 st02 |  24 |    mca |  jaanvi | female
 st01 |  22 |    mca |   sahil |   male
 st04 |  23 | b.tech |     jay |   male

CREATE TABLE test.student (
        id text PRIMARY KEY,
        age int,
        course text,
        name text,
        sex text
    )

我还在年龄列上创建了一个索引

CREATE INDEX age_index ON test.student (age);

我的功能看起来像这样

CREATE OR REPLACE FUNCTION  demojs (input int) 
   CALLED ON NULL INPUT 
   RETURNS int 
   LANGUAGE javascript AS 'function(input){
    return input;
   }';

我的查询是

 select * from student where age=demojs(22);

当我尝试执行查询时出现以下错误

回溯(最后一次调用):文件“C:\Program Files\apache-cassandra-3.11.6\bin\cqlsh.py”,第 1050 行,在 perform_simple_statement 结果 = future.result() 文件“C:\Program Files \apache-cassandra-3.11.6\bin..\lib\cassandra-driver-internal-only-3.11.0-bb96859b.zip\cassandra-driver-3.11.0-bb96859b\cassandra\cluster.py",第 3925 行, 结果引发 self._final_exception FunctionFailure: Error from server: code=1400 [User Defined Function failure] message="execution of 'test.demojs[int]' failed: com.datastax.driver.core.exceptions.InvalidTypeException: Invalid CQL 类型 int 的值"

谁能告诉我在这里做错了什么,这将有很大帮助

标签: javascriptcassandrauser-defined-functions

解决方案


函数的主体将是这样的

   CREATE OR REPLACE FUNCTION  demojs (input int) 
   CALLED ON NULL INPUT 
   RETURNS int 
   LANGUAGE javascript AS 'input;';

推荐阅读