2012-07-16 43 views
0

在這個hadoop教程的底層示例中,有一個「configure()」方法。 http://hadoop.apache.org/common/docs/r0.20.2/mapred_tutorial.html#Source+Code-N10FD0在hadoop中,如何在「configure()」方法中打印?

我想在它裏面放一個打印語句來知道它到達那裏。然而,沒有什麼打印到控制檯。我做錯了,還是有什麼可以讓我不明白的事情。

它位於頁面底部的示例的第28行。

下面是我所說的,但同樣只有WordCount的正常輸出被輸入到控制檯。

public void configure(JobConf job) { 
System.out.println("HERE [email protected]#$%^&*"); 
caseSensitive = job.getBoolean("wordcount.case.sensitive", true); 
inputFile = job.get("map.input.file"); 

回答

1

當你說控制檯 - 你的意思是你從哪個控制檯提交作業?

如果你在本地模式下運行,那麼我會希望sysout在控制檯中。

如果此作業是針對集羣(僞或真實)運行的,則sysout語句將轉到任務日誌,並且不會返回到本地控制檯(除非任務出現錯誤,在這種情況下,您可能會看到stdout/err回到控制檯)。您可以通過轉到Job Tracker Web UI來查看這些日誌,然後在作業上向下鑽取以顯示地圖並減少任務 - 每個任務都有與其關聯的日誌,您也可以通過Web UI查看這些日誌。

+0

謝謝。這是一個很好的答案。你會碰巧知道爲什麼一個變量不會在配置方法中改變。我設置了一個名爲changeMe的全局int。在運行作業之前,我將其設置爲3,並在配置中將其設置爲6.我將其打印在主方法的最後面。輸出爲3. – DSH 2012-07-17 12:41:00

+0

在任務嘗試中對配置所做的任何更改都不會寫回到全局配置 - 爲每個任務嘗試進行復制,而只是更新副本,而不是主人 – 2012-07-17 12:54:10

+0

或者您是談論你的mapper/reducer類中的全局(靜態)變量?在這種情況下,這些任務將在單獨的JVM中運行,並且這些值再也不會返回到主要運行的作業客戶端 – 2012-07-17 12:55:50

0

將此語句添加到您的jobconf對象。 Ans:conf.set(「mapred.job.tracker」,「local」);