[error] found : Unit
[error] required: Boolean
[error] val value = values.split( " " ).filter(x => ( for(y <- x) { if(y!=""){ y}}) )
我的输入RDD就像
1 : 11111,22222
2 : 22224 4747
val lines1 = input2.map( line => line.split(":") )
val l1 = lines1.flatMap( arr => {
val key = arr( 0 )
val values = arr( 1 )
val value = values.split( " " ).filter(x => ( for(y <- x) { if(y!=""){ y}}) )
有什么建议吗?
答案 0 :(得分:1)
filter
方法需要boolean
返回类型检查条件,但您的filter
方法似乎没有返回任何内容,因为for
循环只是创建value
变量而不返回{em> scala 假设为for
的{{1}}循环末尾的任何内容。
根据我对您的问题的理解,您正尝试unit
来自第二个filter
数字的empty
值。因此,如果我的理解是正确的,那么您可以使用以下逻辑
array
答案 1 :(得分:0)
for
将返回一个单位,因为它没有固有的输出。也许你想要一个for-comprehension
,但你需要yield
结果。虽然那时输出将是Seq
而不是预期的Boolean
。我猜你想要将你的值过滤到只有那些有价值的值。在不知道类型的情况下,你可以通过filter(x=>x!="")
使用过滤器,或者通过flatMap(x=>for{y<-x; y!=""}yield y)
使用flatMap,但我们现在需要更多信息来获得完整的答案。