如何存储来自Spark中的foreach的结果



DataSet#foreach(f)将函数 f应用于数据集中的每一行。在聚类的环境中,数据分为群集。如何收集每个功能的结果?

例如,说该函数将计算每行存储的字符数。您如何创建包含应用于每一行的每个功能的结果的数据集或RDD?

foreach的定义看起来像:

final  def  foreach(f: (A) ⇒ Unit): Unit 

f:应用于每个元素的副作用的功能。 功能f的结果被丢弃

Scala中的

foreach通常用于表示涉及副作用的函数的用法,例如打印到stdout。

如果要通过应用特定功能返回某些内容,则必须使用map

final  def  map[B](f: (A) ⇒ B): List[B]

我从List的文档中复制了语法,但也对RDD也是相似的。

如您所见,它可以在Datatype A上使用函数f,并返回数据类型B的集合,其中AB也可以是相同的数据类型。

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))

相关内容

  • 没有找到相关文章

最新更新