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

Java源代码编译失败-Cassandra函数

司徒瀚
2023-03-14

我是Cassandra的新手,我正在尝试创建一个用户定义的聚合,但一直停留在函数创建上。

表中数据为-

count| host
-----+-----------
 102 | test_host1
 100 | test_host2
 101 | test_host2
 101 | test_host3
 104 | test_host3
 101 | test_host1
 100 | test_host3
 103 | test_host3
 102 | test_host3
 100 | test_host1

我正在编写的函数将计算特定主机的表中有多少行。如果我为聚合提供test_host1,理想的结果将是3。

在下面找到函数的代码-

    CREATE FUNCTION countSessions(dataMap map<text,int>,host text)  
    RETURNS NULL ON NULL INPUT  
    RETURNS map<text, int>  
    LANGUAGE java as  
    ' 
    Integer countValue = dataMap.get(host); 
    if(countValue == null) { 
    countValue = 1; 
    } else { 
    countValue++; 
    } 
    dataMap.put(host,countValue); 
    return dataMap; 
    ';

在cqlsh上执行此操作时,我得到以下错误-

InvalidRequest:code=2200[无效查询]message=“无法从Java源代码org.apache.cassandra.exceptions.InvalidRequest UESTEException:Java源代码编译失败:第2行:无法解析dataMap第7行:无法解析dataMap第8行:无法将dataMap解析为变量”

我无法理解我的函数代码出了什么问题。请帮助。

另外,是否有人可以向我推荐任何链接/站点(datastax除外),使用这些链接/站点我可以正确理解UDF和UDA。

感谢和问候,

维巴夫

附言——如果有人选择否决这个问题,请在评论中提及原因。

共有1个答案

裴实
2023-03-14

这不起作用,因为dataMap在初始声明中被转换为小写。您可以这样做:

CREATE FUNCTION countSessions("dataMap" map<text,int>,host text)  
RETURNS NULL ON NULL INPUT  
RETURNS map<text, int>  
LANGUAGE java as  
' 
Integer countValue = dataMap.get(host); 
if(countValue == null) { 
countValue = 1; 
} else { 
countValue++; 
} 
dataMap.put(host,countValue); 
return dataMap; 
';

CREATE FUNCTION countSessions(datamap map<text,int>,host text)  
RETURNS NULL ON NULL INPUT  
RETURNS map<text, int>  
LANGUAGE java as  
' 
Integer countValue = datamap.get(host); 
if(countValue == null) { 
countValue = 1; 
} else { 
countValue++; 
} 
datamap.put(host,countValue); 
return datamap; 
';

让这个工作。

 类似资料:
  • 编译solidity源代码 通过solc编译器编译solidity代码到字节码。你可以参考solidity安装文档在本地安装编译器。 编写solidity代码运行: $ solc <contract>.sol --bin --abi --optimize -o <output-dir>/ bin和ABI编译器参数都需要充分利用web3j中的智能合约。 bin,输出包含十六进制编码的solidit

  • 我最近在部署到我们的共享主机时遇到了问题。从 Visual Studio 通过 Web 部署进行部署时,99% 的时间我在登录后在登录页面或主页上收到此错误。有时我可能会点击几下不同的部分,然后它就会击中。它通常会在几分钟到90分钟后消失。 运行Windows Server 2012 R2 Standard、IIS8和.NET 4.5的Web主机。 Web主机建议我需要使用Visual Studi

  • 问题内容: 如何将Android DEX(VM字节码)文件反编译为相应的Java源代码? 问题答案: It’s easy 获取以下工具: 1)dex2jar将dex文件转换为jar文件 2)jd-gui查看jar中的java文件 由于dex2jar进行了一些优化,因此源代码具有很高的可读性。 Procedure:: 这是有关如何反编译的过程: 步骤1: 将中的转换为 注1:在Windows计算机上

  • 我目前正在开发一个ASP.NET应用程序,该应用程序的解决方案中包含2个项目:一个Web应用程序和一个WebAPI。( 我已经尝试在“projectAPI”中包含对“projectWeb”的引用。 当我构建“projectAPI”时,浏览器显示以下消息: 编译错误 说明:编译所需的资源时出错 编译器错误消息:编译器失败,错误代码为-532462766。 当我删除引用时,不再有错误。 我能做什么?

  • 问题内容: 我正在寻找Sun标准Java编译器的源代码。 jdk1.6.0_07有一些相关的类,但它们是接口(和)。在和下还有一些包,它们似乎是表示Java抽象语法树的接口。 但是我找不到编译器源-有人知道它在哪里吗? 问题答案: 检查此站点Java编程语言编译器(javac)组。来源在Mercurial存储库中。 jdk7 / tl / langtools(对于JDK 1.7) jdk6 / j