如果在pig中运行一个简单的groupby脚本来获取大TB的数据时,脚本被卡住了,比如说70%,那么可以做些什么来诊断问题呢?
l5tcr1uw1#
有几种方法可以调试pig脚本。简单的方法是逐步执行关系,然后验证结果。这些命令对于调试pig脚本非常有用。dump-使用dump操作符运行(执行)pig拉丁语句并将结果显示到屏幕上。说明-使用说明运算符查看数据是如何通过一系列语句进行转换的。演示允许您在小数据集上测试程序,并获得更快的周转时间。explain—使用explain操作符查看用于计算指定关系的逻辑、物理和map reduce执行计划。descripe-使用descripe操作符查看关系的模式。您可以查看外部关系以及嵌套foreach语句中定义的关系。有关这些命令的更多详细信息,请访问此链接。也请参考开发和测试Pig脚本。了解更多细节。如果要在执行期间调试整个脚本,则需要在脚本顶部编写以下代码
-- set the debug mode on SET debug 'on' -- set a job name of your job. SET job.name 'my job'
这将允许将脚本运行到调试模式。关于模式详细信息 SET 命令在此链接上可用
SET
ux6nzvsh2#
当你说剧本停留在70%时,我想你的意思是mr的工作完成了70%。此时最好查看mr和yarn日志(如果需要,还可以查看hdfs日志),以获取有关mr/yarn正在做什么的更多信息。日志通常可以在cloudera manager管理的集群中的/var/log/hadoop mapreduce和/var/log/hadoop hdfs下找到。您可能需要检查群集中运行yarn节点管理器的多个节点的日志。如果您的脚本遇到pig问题(即pig代码中的问题,而不是mr/hdfs代码中的问题),增加pig中的log4j日志级别是很有用的:例如,pig-d debug是将日志级别设置为debug的命令行选项。
2条答案
按热度按时间l5tcr1uw1#
有几种方法可以调试pig脚本。简单的方法是逐步执行关系,然后验证结果。这些命令对于调试pig脚本非常有用。
dump-使用dump操作符运行(执行)pig拉丁语句并将结果显示到屏幕上。
说明-使用说明运算符查看数据是如何通过一系列语句进行转换的。演示允许您在小数据集上测试程序,并获得更快的周转时间。
explain—使用explain操作符查看用于计算指定关系的逻辑、物理和map reduce执行计划。
descripe-使用descripe操作符查看关系的模式。您可以查看外部关系以及嵌套foreach语句中定义的关系。
有关这些命令的更多详细信息,请访问此链接。也请参考开发和测试Pig脚本。了解更多细节。
如果要在执行期间调试整个脚本,则需要在脚本顶部编写以下代码
这将允许将脚本运行到调试模式。关于模式详细信息
SET
命令在此链接上可用ux6nzvsh2#
当你说剧本停留在70%时,我想你的意思是mr的工作完成了70%。
此时最好查看mr和yarn日志(如果需要,还可以查看hdfs日志),以获取有关mr/yarn正在做什么的更多信息。日志通常可以在cloudera manager管理的集群中的/var/log/hadoop mapreduce和/var/log/hadoop hdfs下找到。您可能需要检查群集中运行yarn节点管理器的多个节点的日志。
如果您的脚本遇到pig问题(即pig代码中的问题,而不是mr/hdfs代码中的问题),增加pig中的log4j日志级别是很有用的:例如,pig-d debug是将日志级别设置为debug的命令行选项。