剛剛開始使用Spark和Scala。我們在我們的開發cloudera hadoop集羣上安裝了Spark 2,並且正在使用spark2-shell。我正在閱讀一本書來學習一些基礎知識。它的例子顯示的println(富)而不做收集工作,但是這不是爲我工作:Spark Scala println需要collect()?
scala> val numbers = sc.parallelize(10 to 50 by 10)
numbers: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[9] at parallelize at <console>:24
scala> numbers.collect().foreach(println)
10
20
30
40
50
scala> numbers.foreach(x => println(x))
scala>
正如你所看到的,不執行打印作業,除非我做一個收集()。
這是怎麼回事,這本書是錯的,還是有趣的是我的spark/scala/config?
版本信息:
Spark version 2.0.0.cloudera2
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_111)
你在哪個環境中跑步?如果您在羣集上運行,那麼沒有收集的foreach將首先在羣集上運行,而不是在本地計算機上運行。 – puhlen
謝謝,猜猜這是問題。我們的DEV hadoop集羣運行spark有幾個數據節點。 – medloh