2015-05-12 111 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。