DataSet#foreach(f)
将函数 f
应用于数据集中的每一行。在聚类的环境中,数据分为群集。如何收集每个功能的结果?
例如,说该函数将计算每行存储的字符数。您如何创建包含应用于每一行的每个功能的结果的数据集或RDD?
foreach
的定义看起来像:
Scala中的final def foreach(f: (A) ⇒ Unit): Unit
f
:应用于每个元素的副作用的功能。 功能f
的结果被丢弃
foreach
通常用于表示涉及副作用的函数的用法,例如打印到stdout。
如果要通过应用特定功能返回某些内容,则必须使用map
final def map[B](f: (A) ⇒ B): List[B]
我从List
的文档中复制了语法,但也对RDD也是相似的。
如您所见,它可以在Datatype A
上使用函数f
,并返回数据类型B
的集合,其中A
和B
也可以是相同的数据类型。
val rdd = sc.parallelize(Array(
"String1",
"String2",
"String3" ))
scala> rdd.foreach(x => (x, x.length) )
// Nothing happens
rdd.map(x => (x, x.length) ).collect
// Array[(String, Int)] = Array((String1,7), (String2,7), (String3,7))