错误:类型不匹配的flatMap

Anaadih.pradeep

我是火花编程和Scala的新手,我无法理解map和flatMap之间的区别。我尝试使用下面的代码,因为我期望两者都能正常工作,但出现错误。

scala> val b = List("1","2", "4", "5")
b: List[String] = List(1, 2, 4, 5)

scala> b.map(x => (x,1))
res2: List[(String, Int)] = List((1,1), (2,1), (4,1), (5,1))

scala> b.flatMap(x => (x,1))
<console>:28: error: type mismatch;
 found   : (String, Int)
 required: scala.collection.GenTraversableOnce[?]
              b.flatMap(x => (x,1))

根据我的理解,平面图使Rdd成为String / Int Rdd的集合。我当时认为这两种方法都应该正常工作,请让我知道我在哪里出错。

谢谢

尤瓦尔·伊茨恰科夫(Yuval Itzchakov)

您需要查看签名如何定义这些方法:

def map[U: ClassTag](f: T => U): RDD[U]

map从一个类型T另一个类型接受一个函数U并返回RDD[U]

另一方面,flatMap

def flatMap[U: ClassTag](f: T => TraversableOnce[U]): RDD[U]

期望将类型带T为a的函数TraversableOnce[U](该特征Tuple2没有实现)返回a RDD[U]通常,flatMap当您要展平集合的集合时使用,即,如果您有一个RDD[List[List[Int]]并且要生成一个RDD[List[Int]],则可以使用进行flatMap identity

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章