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

都是mapflatMap 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]