在Spark的rdd.map(_.swap)

men*_*h84 4 scala apache-spark

我是Scala和Spark的新手.任何人都可以解释是什么意思

rdd.map(_.swap)
Run Code Online (Sandbox Code Playgroud)

?如果我查看Scala/Spark API,我找不到swapRDD类中的方法.

Ton*_*res 8

swap是Scala Tuples的一种方法.它将Tuple2(或对)的第一个和第二个元素相互交换.例如:

scala> val pair = ("a","b")
pair: (String, String) = (a,b)

scala> val swapped = pair.swap
swapped: (String, String) = (b,a)
Run Code Online (Sandbox Code Playgroud)

RDD的map函数将给定函数应用于RDD的每个元素.在这种情况下,要应用于每个元素的功能很简单

_.swap
Run Code Online (Sandbox Code Playgroud)

在这种情况下,下划线是Scala在编写匿名函数时的简写,它与传入函数的参数有关,而不是命名它.所以上面的代码片段可以重写为:

rdd.map{ pair => pair.swap }
Run Code Online (Sandbox Code Playgroud)

因此,您发布的代码段交换了RDD每行中元组/对的第一个和第二个元素.