как создать javascript udf в apache кассандре - PullRequest
1 голос
/ 07 мая 2020

Я новичок в Apache Кассандре и javascript, мне нужно создать javascript udf в Apache Кассандре. Я создал простой udf в Cassandra, но я не могу вызвать функцию в запросе, выскакивает ошибка

вот все детали, связанные с моим вопросом

выглядит моя таблица вот так

 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);

при попытке выполнить запрос я получил следующую ошибку:

Traceback (последний вызов последним): File "C: \ Program Files \ apache -cassandra-3.11.6 \ bin \ cql sh .py ", строка 1050, в perform_simple_statement result = future.result () File" 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 с сервера: code = 1400 [сбой функции, определяемой пользователем] message = "сбой при выполнении 'test.demojs [int]': com.datastax.driver.core.excepti ons.InvalidTypeException: недопустимое значение для типа CQL int "

кто-нибудь может сказать, что я здесь делаю не так, это очень поможет

1 Ответ

1 голос
/ 07 мая 2020

тело функции будет таким

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