【问题标题】:How can I debug a pig script如何调试猪脚本
【发布时间】:2015-07-23 18:39:48
【问题描述】:

如果在 pig 中针对大量 TB 数据运行简单的 group by 脚本时,脚本卡在了 70%,那么可以做些什么来诊断问题?

【问题讨论】:

    标签: hadoop apache-pig bigdata


    【解决方案1】:

    有几种方法可以调试猪脚本。简单的方法是逐步执行关系,然后验证结果。这些命令对于调试 pig 脚本很有用。

    DUMP - 使用 DUMP 运算符运行(执行)Pig Latin 语句并将结果显示在屏幕上。

    ILLUSTRATE - 使用 ILLUSTRATE 运算符查看数据是如何通过一系列 Pig Latin 语句转换的。 ILLUSTRATE 允许您在小型数据集上测试您的程序并获得更快的周转时间。

    EXPLAIN - 使用 EXPLAIN 运算符查看用于计算指定关系的逻辑、物理和 map reduce 执行计划。

    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 上找到

    【讨论】:

      【解决方案2】:

      当您说脚本停留在 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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 2021-04-05
        • 2017-08-24
        • 2014-05-14
        相关资源
        最近更新 更多