我在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))
}
}
我试图找出它为什么不在输出上打印任何内容。我在本地计算机上运行它,而不是在集群上运行。
答案 0 :(得分:5)
您只有转化,没有actions。在调用操作之前,Spark不会执行。添加此行以打印出结果的前10位。
s.take(10).foreach(println)
答案 1 :(得分:4)
mapPartitions
是一种转变,因而是懒惰的
如果最后添加一个动作,将评估整个表达式。最后尝试添加s.count
。