加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 错误:类型不匹配flatMap

发布时间:2020-12-16 18:19:04 所属栏目:安全 来源:网络整理
导读:我是新手来编程和 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,(4,(5
我是新手来编程和 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,(4,(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))

根据我的理解,flatmap将Rdd输入到String / Int Rdd的集合中.
我想在这种情况下两者都应该没有任何错误.请让我知道我在哪里犯了错误.

谢谢

解决方法

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

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带到TraversableOnce [U]的函数,这是Tuple2未实现的特性,并返回RDD [U].通常,当您想要展平集合集合时使用flatMap,即如果您有RDD [List [List [Int]]并且您想要生成RDD [List [Int]],则可以使用identity对其进行flatMap.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读