bin/pyspark --master spark://master:7077
>>> array = [1,2,3,4,5]
>>> rdd = sc.parallelize(array)
>>> rdd.foreach(print)
[Stage 0:> (0 + 8) / >>> rdd.collect()
[1, 2, 3, 4, 5]
>>>
在 Spark 中使用 foreach 操作时,是将数据并行地发送到集群中的工作节点,而不是将结果返回到驱动程序中。因此,将不会在驱动程序中看到 foreach 操作的输出。相反,输出将会在工作节点的控制台上打印出来。如果您使用的是分布式环境,则可能需要查看每个工作节点上的控制台输出。
在您的示例中,输出 “[Stage 0:> (0 + 8) /” 表明 Spark 正在处理阶段 0,并且已经处理了 0 个分区,而还有 8 个分区需要处理。因此,您可以查看 Spark 集群上工作节点的控制台输出,以查看 foreach 的输出。您可以通过执行以下命令来查看每个工作节点上的控制台输出
$SPARK_HOME/logs/worker-*.out
其中,$SPARK_HOME 是 Spark 的安装路径。
如果您想要在驱动程序中查看输出,可以考虑使用 collect 操作,如您所示的那样。但是请注意,collect 操作将所有数据收集到驱动程序中,如果数据量很大,可能会导致驱动程序崩溃。