理解scala中Spark中的函数文档
我是Scala的新手&试图理解Spark中Scala的功能。“flatMap”函数有如下文档理解scala中Spark中的函数文档,scala,apache-spark,Scala,Apache Spark,我是Scala的新手&试图理解Spark中Scala的功能。“flatMap”函数有如下文档 def flatMap[U](f: (T) ⇒ TraversableOnce[U])(implicit arg0: ClassTag[U]): RDD[U] Return a new RDD by first applying a function to all elements of this RDD, and then flattening the results. 虽然我知道flatMap的确
def
flatMap[U](f: (T) ⇒ TraversableOnce[U])(implicit arg0: ClassTag[U]): RDD[U]
Return a new RDD by first applying a function to all elements of this RDD, and then flattening the results.
虽然我知道flatMap的确切功能,但理解文档似乎太神秘了(比如U、f、T等字母)。如果有人能解释一下本文件的每个部分到底传达了什么,我们将不胜感激
def flatMap[U](f: (T) ⇒ TraversableOnce[U])(implicit arg0: ClassTag[U]): RDD[U]
尝试用Person
替换T
,用Pet
替换U
flatMap
将函数f
作为参数。此函数将类型为Person
的实例作为参数,并返回Pet
s的集合,即此人的宠物flatMap
随后将返回单个Pet
s集合,即RDD[Pet]
def flatMap[Pet](f: (Person) ⇒ TraversableOnce[Pet])(implicit arg0: ClassTag[Pet]): RDD[Pet]
//usage .
val allPets = people.flatMap(person => person.pets)
第二个参数列表上的隐式ClassTag
是另一种情况。这用于要求编译器为类型Pet
创建清单,以便flatMap
可以反映该类型
请在此处阅读更多信息:
:这是一种称为flatMap的方法def flatMap
:它是泛型的,只有一个类型参数[U]
U
:它接受一个类型为(f:(T)⇒ TraversableOnce[U])
(T的参数
⇒ TraversableOnce[U]f
是T
本身的通用参数,例如,如果您有一个RDD
,则RDD[String]
)。因此T=String
是一个单参数函数,它接受f
并返回T
。请记住,可遍历一次[U]
是方法上的类型参数(泛型)。因此,您可以使用任何函数调用此方法,该函数接受U
,并返回T
TraversableOnce[Something]
:该方法要求类型为(隐式arg0:ClassTag[U])
的隐式参数可用。这样的隐式通常约束类型参数可以是什么类型。在这种情况下,ClassTag[U]
意味着类型ClassTag
需要在编译时提供具体的类型信息。实际上,您可以忽略这一点,除非您试图从自己的通用方法调用U
flatMap
:该方法返回一个:RDD[U]
。记住RDD[U]
是方法上的类型参数。因此,如果使用返回U
的TraversableOnce[Int]
调用f
,返回类型将是flatMap
;如果使用返回RDD[Int]
的TraversableOnce[Potato]
调用f
,返回类型将是flatMap
,依此类推RDD[Potato]