spark py启动foreach不输出内容

img


spark 采用python模式启动 foreach(print)输出没内容求解决方法搞了一下午了...
只输出stage但collect可以正常收集

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 操作将所有数据收集到驱动程序中,如果数据量很大,可能会导致驱动程序崩溃。