簡體   English   中英

Spark Cluster:如何在每個工作節點上打印出RDD的內容

[英]Spark Cluster: How to print out the content of RDD on each worker node

我剛剛開始學習apache spark,想知道為什么這對我不起作用。

我正在運行spark 2.1,並啟動了一個管理員和一個工人(不是本地的)。 這是我的代碼:

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()    
    }
}

我似乎無法讓工作節點在stdout中打印出其內容。 即使將master和worker設置為local,它似乎也不起作用。

我在這里理解錯了嗎?

如果要在執行程序中打印某些內容,可以使用常規的println。 那將在執行者的標准輸出中打印輸出

您可以在瀏覽器[Master Machine]中的localhost:8080中查看工作人員狀態,應用程序狀態stderr,每個工作人員rdd分發的stdout以及更多內容。 單擊worker-Id,您可以查看日志(stdout,stderr)。 如果您想查看實際的分發和狀態,可以單擊正在運行的應用程序,然后單擊“ 應用程序詳細UI”鏈接,它將顯示您的應用程序的完整詳細信息。

如果只想查看工作程序用戶界面,則可以在工作程序系統中鍵入localhost:8081進行查看。

無論何時提交Spark Job,Spark作業的任務(指令)都會從驅動程序傳遞到執行程序。 該驅動程序可以在您當前登錄的同一節點(本地和YARN客戶端)上運行,或者該驅動程序可以在另一個節點(Application master)上運行。

所有操作都會將結果返回給驅動程序,因此,如果您登錄到運行驅動程序的計算機,則可以看到輸出。 但是您無法在執行程序節點上看到輸出,因為任何打印語句都會在相應計算機的控制台上打印。 您只需執行sc.textFile(),它將所有分區分別保存到目錄中。 這樣,您可以看到每個分區中的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM