【问题标题】:Debugging in PIG UDF在 PIG UDF 中调试
【发布时间】:2012-06-12 21:17:11
【问题描述】:

我是 Hadoop/PIG 的新手。 我有一个基本问题。

我们在 PIG UDF 中有记录工具吗?我写了一个需要验证的 UDF 我需要记录某些语句来检查流程。是否有可用的日志记录工具?如果是,Pig 日志在哪里?

【问题讨论】:

    标签: hadoop apache-pig hdfs


    【解决方案1】:

    假设您的 UDF 扩展了 EvalFunc,您可以使用从 EvalFunc.getLogger() 返回的 Logger。日志输出应该在 pig 执行的关联 Map / Reduce 任务中可见(如果作业在多个阶段执行,那么您必须通过它们来查找关联的日志条目)。

    【讨论】:

    • 那么日志最终会出现在 Map Reduce 任务日志文件中吗?我可以专门将我的日志语句放到一个单独的文件中吗?
    • 是的,他们会的。你可以,但你必须去每个任务跟踪器查看/收集它们。我想你可以尝试配置一个远程记录器(例如记录到数据库)。
    • 我不确定,但你可以试试 PigLogger - 它可能会将内容发送回客户端。
    • 我很抱歉提出这么幼稚的问题。但是,我以以下方式使用它: PigLogger pigLogger = this.getPigLogger(); pigLogger.warn(对象,字符串,枚举);我在这里错过了什么吗?或者这就是 EvalFunc Logger。除了警告我什么都看不到。我们没有调试、信息、错误吗?
    • 我尝试使用 this.getLogger.info(String);这应该在 tasktarcker 日志中弹出吗?我看不到任何日志。
    【解决方案2】:

    也许很明显,但我建议在部署到集群/伪集群之前先在本地模式下调试您的 UDF。这样,您可以直接在 IDE 中调试它(在我的例子中是 eclipse),这比日志调试更容易。

    【讨论】:

    • 是否有我可以遵循的站点或一些步骤来开始使用 Eclipse。我的意思是日食上的猪。
    • 不知道有步骤的站点,但它很简单:将 hadoop-core 和 pig 依赖项放入您的 maven pom,然后使用 org.apache.pig.PigServer。试试pigServer.registerScript(resource.getInputStream(), pigScriptParams, null); 然后PigStats stats = pigServer.store("final_output", pigScriptParams.get("output_folder"), pigStoreFunc).getStatistics();
    猜你喜欢
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多