scala – 从mapValues或flatMapValues访问键?

在Spark 1.3中,有没有办法从mapValues访问密钥?

具体来说,如果我有

val y = x.groupBy(someKey)
val z = y.mapValues(someFun)

someFun可以知道它目前在哪个关键操作?

或者我必须这样做

val y = x.map(r => (someKey(r),r)).groupBy(_._1)
val z = y.mapValues{ case (k,r) => someFun(r,k) }

注意:我想使用mapValues而不是map的原因是为了保留分区.

解决方法

您不能将该键与mapValues一起使用.但是您可以使用mapPartitions保留分区.

val pairs: Rdd[(Int,Int)] = ???
pairs.mapPartitions({ it =>
  it.map { case (k,v) =>
    // your code
  }
},preservesPartitioning = true)

小心实际保留分区,编译器将无法检查它.

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...