我正在尝试在Scala 2.11中向ConcurrentLinkedQueue
(collectedData)
添加数组:
stream.foreachRDD { rdd => Collections.addAll(collectedData, rdd.collect()) }
我收到以下编译错误:
[error] found : java.util.concurrent.ConcurrentLinkedQueue[(String, String)]
[error] required: java.util.Collection[_ >: java.io.Serializable]
[error] Note: (String, String) <: Any, but Java-defined trait Collection is invariant in type E.
[error] You may wish to investigate a wildcard type such as `_ <: Any`. (SLS 3.2.10)
[error] stream.foreachRDD { rdd => Collections.addAll(allReceived, rdd.collect()) }
有人可以告诉我这些错误的含义吗?
答案 0 :(得分:0)
您的信息流的类型是什么?
错误消息告诉您,您有一个字符串元组的集合。 但是您需要一个集合,您可以在其中插入Serializable实例。 这通常意味着某个类型被推断为您不想要的。
您是否明确声明了流的类型? 如果没有,尝试这样做,可能你会在某处出现类型错误,真正的问题是。
答案 1 :(得分:0)
你可以使用带有splat语法的Arrays.asList以及ConcurrentLinkedQueues添加所有方法:
read(socket_filedes, buffer, MAXSZ);
/* stop if delimiter '>' is detected */