微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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)

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐