为什么mapPartitions没有打印到stdout?

时间:2015-11-20 15:45:39

标签: scala apache-spark

我在scala中有这段代码

 
object SimpleApp {

  def myf(x: Iterator[(String, Int)]): Iterator[(String, Int)] = {
    while (x.hasNext) {
     println(x.next)
    }
    x
  }

  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val tx1 = sc.textFile("/home/paourissi/Desktop/MyProject/data/testfile1.txt")
    val file1 = tx1.flatMap(line => line.split(" ")).map(word => (word, 1))
    val s = file1.mapPartitions(x => myf(x))
  }
}

我试图找出它为什么不在输出上打印任何内容。我在本地计算机上运行它,而不是在集群上运行。

2 个答案:

答案 0 :(得分:5)

您只有转化,没有actions。在调用操作之前,Spark不会执行。添加此行以打印出结果的前10位。

s.take(10).foreach(println)

答案 1 :(得分:4)

mapPartitions是一种转变,因而是懒惰的

如果最后添加一个动作,将评估整个表达式。最后尝试添加s.count