【发布时间】:2017-03-29 17:12:10
【问题描述】:
刚刚开始使用 Spark 和 Scala。我们已经在我们的开发 cloudera hadoop 集群上安装了 Spark 2,我正在使用 spark2-shell。我正在通过一本书来学习一些基础知识。它的示例显示 println(foo) 无需收集即可工作,但这对我不起作用:
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>
如您所见,除非我执行 collect(),否则不会打印任何内容。
发生了什么事,是书错了,还是我的 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 将首先在集群上而不是您的本地计算机上运行。
-
谢谢,我猜这就是问题所在。我们运行 spark 的 DEV hadoop 集群有几个数据节点。
标签: scala apache-spark cloudera