flatMap 不支持布尔值吗?
Is boolean not supported with flatMap?
我在使用 flatMap
时遇到了这个错误,但使用 map
时却没有。 flatMap
转换不支持布尔运算吗?
scala> val array = Array("age","astro")
array: Array[String] = Array(age, astro)
scala> val baseRdd = sc.parallelize(array)
baseRdd: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:29
scala> val flat2 = baseRdd2.flatMap(x => x.contains("a"))
<console>:31: error: type mismatch;
found : Boolean
required: TraversableOnce[?]
val flat2 = baseRdd2.flatMap(x => x.contains("a"))
flatMap
需要一个函数作为 returns TraversableOnce
的参数,即列表或其他东西。 x.contains("a")
return 是一个简单的布尔值 - 也许您打算使用 map
而不是 flatMap
?
都是map
和flatMap
return RDD,区别在于你必须传递一个returns TraversableOnce
到[=10的函数=].然后它将 "flatten" 数据结构,因此得名。 flatMap
就是这样定义的。您 可以 将 x => Array(x.contains("a"))
传递给 flatMap
,但在这种情况下使用 map
会更简单。
map 对列表中的每个元素计算一个函数,返回具有相同数量元素的列表。而 flatMap 为集合的元素调用函数 f 生成一个新集合。 flatMap 只是 map 和 flatten 的组合。
flatMap[B](f: A => Container[B]): Container[B]
我在使用 flatMap
时遇到了这个错误,但使用 map
时却没有。 flatMap
转换不支持布尔运算吗?
scala> val array = Array("age","astro")
array: Array[String] = Array(age, astro)
scala> val baseRdd = sc.parallelize(array)
baseRdd: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:29
scala> val flat2 = baseRdd2.flatMap(x => x.contains("a"))
<console>:31: error: type mismatch;
found : Boolean
required: TraversableOnce[?]
val flat2 = baseRdd2.flatMap(x => x.contains("a"))
flatMap
需要一个函数作为 returns TraversableOnce
的参数,即列表或其他东西。 x.contains("a")
return 是一个简单的布尔值 - 也许您打算使用 map
而不是 flatMap
?
都是map
和flatMap
return RDD,区别在于你必须传递一个returns TraversableOnce
到[=10的函数=].然后它将 "flatten" 数据结构,因此得名。 flatMap
就是这样定义的。您 可以 将 x => Array(x.contains("a"))
传递给 flatMap
,但在这种情况下使用 map
会更简单。
map 对列表中的每个元素计算一个函数,返回具有相同数量元素的列表。而 flatMap 为集合的元素调用函数 f 生成一个新集合。 flatMap 只是 map 和 flatten 的组合。
flatMap[B](f: A => Container[B]): Container[B]