Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark Cluster:如何在每个工作节点上打印RDD的内容_Scala_Apache Spark - Fatal编程技术网

Scala Spark Cluster:如何在每个工作节点上打印RDD的内容

Scala Spark Cluster:如何在每个工作节点上打印RDD的内容,scala,apache-spark,Scala,Apache Spark,我刚开始学习ApacheSpark,想知道为什么这对我不起作用 我正在运行spark 2.1,并启动了一个master和一个worker(非本地)。这是我的代码: object SimpleApp { def main(args: Array[String]) { val file = [FILELOCATION] val conf = new SparkConf().setAppName("Simple Application") val sc = new Sp

我刚开始学习ApacheSpark,想知道为什么这对我不起作用

我正在运行spark 2.1,并启动了一个master和一个worker(非本地)。这是我的代码:

object SimpleApp {
    def main(args: Array[String]) {
    val file = [FILELOCATION]
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val textFile = sc.textFile(file)   
    val counts = textFile.flatMap(line => line.split(" "))
                         .map(word => (word.toLowerCase.toCharArray.toList.sorted.mkString, 1))
                         .reduceByKey(_ + _)

    counts.map(println)
    counts.foreach(println)

    val countCollect = counts.collect()

    sc.stop()    
    }
}
我似乎无法让worker节点在stdout中打印出它们的内容。即使我将master和worker设置为local,它似乎也不起作用


我理解这里有什么错误吗?

如果您想在executor中打印某些内容,可以使用普通的println。这将在执行器的标准输出中打印输出。实际上,您可以在浏览器[主机]中的localhost:8080中查看每个工人rdd分发的工人状态、应用程序状态标准、标准输出以及更多内容。单击worker Id,您可以查看日志(stdout、stderr)。如果您想查看实际的分布情况和状态,可以单击正在运行的应用程序,在该链接中单击应用程序详细信息界面,它将显示应用程序的完整详细信息


如果只想查看worker UI,则可以在worker system中键入localhost:8081进行查看。

无论何时提交Spark作业,Spark作业的任务(说明)都会从驱动程序传递给执行者。驱动程序可以在您当前登录的同一节点(本地和客户端)上运行,也可以在另一个节点(应用程序主节点)上运行


所有操作都会将结果返回给驱动程序,因此,如果您登录到驱动程序运行的机器,您可以看到输出。但您无法在executor节点上看到输出,因为任何打印语句都将在相应机器的控制台上打印。您只需执行sc.textFile(),它就会将所有分区分别保存到目录中。通过这种方式,您可以看到每个分区中的内容

你是怎么做的?通过IDE或
spark submit
?我正在通过spark submit运行它。您检查过执行者的日志了吗?您可以尝试使用
countCollect.map(println)
?让我知道这是否有效。我尝试过这个方法,但没有在工人的外壳上打印任何内容。我进入localhost:8080,试图查看打印在stdout上的内容,但它是空的。我可以通过[counts.collect().foreach(println)]收集rdd并打印收集的内容,但我假设这是在驱动程序方面。我面临的问题是在执行者端打印rdd的分布式内容。我希望能够看到文档是如何在工作节点之间拆分的,并详细了解流程。