2015-05-12 146 views
5

如果在豬的大量TB數據中通過腳本運行一個簡單的組時,腳本會停留在70%的比例,那麼可以如何診斷問題?如何調試豬腳本

回答

9

有幾種調試豬腳本的方法。簡單的方法是逐步執行關係,然後驗證結果。這些命令對調試豬腳本很有用。

DUMP - 使用DUMP運算符運行(執行)Pig拉丁語句並將結果顯示在屏幕上。

ILLUSTRATE - 使用ILLUSTRATE運算符來查看數據如何通過Pig拉丁語句序列進行轉換。 ILLUSTRATE允許您在小數據集上測試您的程序並獲得更快的週轉時間。

EXPLAIN - 使用EXPLAIN運算符查看用於計算指定關係的邏輯,物理和映射減少執行計劃。

DESCRIBE - 使用DESCRIBE運算符查看關係的模式。您可以查看外部關係以及嵌套的FOREACH語句中定義的關係。

有關這些命令的更多詳細信息,請參見link。 另請參閱developing and testing a pig script.瞭解更多詳情。

如果你想調試執行過程中整個腳本,那麼你需要在你的腳本

-- set the debug mode on 
SET debug 'on' 
-- set a job name of your job. 
SET job.name 'my job' 

這將允許運行腳本進入調試模式上面寫下面的代碼。關於SET命令的模式詳細信息可在此link

0

當您說腳本停留在70%時,我假設您的意思是MR作業已完成70%。

這時最好查看MR和YARN日誌(如果需要的話,HDFS日誌)以獲取有關MR/YARN正在執行的更多信息。通常可以在Cloudera Manager受管羣集中的/var/log/hadoop-mapreduce/var/log/hadoop-hdfs中找到日誌。您可能需要檢查羣集中運行YARN NodeManagers的多個節點中的日誌。

如果你的腳本被套牢一個豬的問題(即豬代碼,而不是MR/HDFS代碼問題),它是有用提高了養豬的log4j的日誌記錄級別: 豬-d DEBUG就是命令例如,將日誌記錄級別設置爲DEBUG。