Cassandra UDF和Java在使用流时抛出错误

Cassandra UDF和Java在使用流时抛出错误,cassandra,user-defined-functions,cqlsh,Cassandra,User Defined Functions,Cqlsh,我正在尝试使用Java在Cassandra中编写UDF。 我有两个具有一对一映射的整数列表,即,第一个列表中的第一项对应于第二个列表中的第一项。这就是我的数据如何存储在Cassandra表中的两列列表类型下。 我的UDF 我使用的卡桑德拉版本有什么问题吗?我在一个码头工人的本地MAC机器上运行Cassandra。我尝试了3.11.2和带有latest标签的图像。 此外,UDF函数已启用,我可以运行简单的UDF函数。您只能使用在Cassandra内部的允许类列表中明确定义的类,而不能使用在定义的不

我正在尝试使用Java在Cassandra中编写
UDF。
我有两个具有一对一映射的整数列表,即,第一个列表中的第一项对应于第二个列表中的第一项。这就是我的数据如何存储在Cassandra表中的两列列表类型下。
我的UDF

我使用的卡桑德拉版本有什么问题吗?我在一个码头工人的本地MAC机器上运行Cassandra。我尝试了
3.11.2
和带有
latest
标签的图像。
此外,UDF函数已启用,我可以运行简单的UDF函数。

您只能使用在Cassandra内部的允许类列表中明确定义的类,而不能使用在定义的不允许类列表中明确定义的类。如果您查看Cassandra 3.11.2的源代码,那么就不能在UDF/UDA中使用它。

谢谢您的回答。我已修改代码,不使用流。
CREATE OR REPLACE FUNCTION mykeyspace.get_thread(list1 List<int>, list2 List<int>)
CALLED ON NULL INPUT 
RETURNS List<int>
LANGUAGE java
AS '
Map<Integer, Integer> intermediatemap = new HashMap<Integer, Integer>();
for (int i = 0; i < list1.size(); i++) {
   if (!intermediatemap.containsKey(i))
       intermediatemap.put(list1.get(i), list2.get(i));
}
List<Integer> commentids = new ArrayList<Integer>();
intermediatemap.entrySet().stream()
       .sorted(Map.Entry.<Integer, Integer>comparingByValue().reversed())
       .forEachOrdered(x -> commentids.add(x.getKey()));
if (commentids.size() > 8)
   return commentids.subList(0, 8);
else
   return commentids;
'; 
InvalidRequest: Error from server: code=2200 [Invalid query] message="Java source compilation failed:
Line 8: The type java.util.stream.Stream cannot be resolved. It is indirectly referenced from required .class files
Line 8: The method stream() from the type Collection<Map.Entry<Integer,Integer>> refers to the missing type Stream