如果在猪中使用脚本运行一个简单的组来获取大数TB的数据,那么脚本就会停留在70%,那么可以采取哪些措施来诊断问题呢?
答案 0 :(得分:10)
调试pig脚本有几种方法。简单的方法是逐步执行关系,然后验证结果。这些命令对调试猪脚本非常有用。
DUMP - 使用DUMP运算符运行(执行)Pig Latin语句并将结果显示在屏幕上。
ILLUSTRATE - 使用ILLUSTRATE运算符来查看如何通过一系列Pig Latin语句转换数据。 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'
这将允许您的脚本运行到调试模式。 link
上提供了关于SET
命令的模式详细信息
答案 1 :(得分:0)
当你说脚本停留在70%时,我认为你的意思是MR工作完成了70%。
最好在此时查看MR和YARN日志(如果需要,还有HDFS日志),以获取有关MR / YARN正在做什么的更多信息。日志通常位于Cloudera Manager托管集群中的 / var / log / hadoop-mapreduce 和 / var / log / hadoop-hdfs 下。您可能需要检查运行YARN NodeManagers的群集中多个节点的日志。
如果您的脚本遇到Pig问题(即Pig代码中的问题,而不是MR / HDFS代码),那么增加Pig中的log4j日志记录级别会很有用: pig -d DEBUG 是用于将日志记录级别设置为DEBUG的命令行选项。