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

scala – 在PairRDDFunctions.reduceByKey()中使用’case’

发布时间:2020-12-16 10:00:05 所属栏目:安全 来源:网络整理
导读:这是方法reduceByKey的语法 def reduceByKey(func: (V,V) ? V): RDD[(K,V)] 在我练习的字数统计程序中,我看到这段代码, val counts = words.map(word = (word,1)).reduceByKey{case (x,y) = x + y} 该应用程序使用(x,y)而不是case(x,y).这里的案例有什么用处
这是方法reduceByKey的语法

def reduceByKey(func: (V,V) ? V): RDD[(K,V)]

在我练习的字数统计程序中,我看到这段代码,

val counts = words.map(word => (word,1)).reduceByKey{case (x,y) => x + y}

该应用程序使用(x,y)而不是case(x,y).这里的案例有什么用处.我也检查了@ghik here的答案.但是无法理解

解决方法

Scala支持多种定义匿名函数的方法. “case”版本被称为 Pattern Matching Anonymous Functions,它或多或少等同于:

(x: Int,y: Int) => (x,y) match { case (x,y) => x + y }

而没有案例的版本几乎是它的样子:

(x: Int,y: Int) => x + y

在这种情况下,简单_ _就足够了:

val counts = words.map(word => (word,1)).reduceByKey(_ + _)

当您使用模式匹配时,最简单的情况可能就是当您处理Scala Options时:

(x: Option[Int],y: Option[Int]) => (x,y) match {
    case (Some(xv),Some(yv)) => xv + yv
    case (Some(xv),_) => xv
    case (_,Some(yv)) => yv
    case _ => 0
}

(编辑:李大同)

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

    推荐文章
      热点阅读