【问题标题】:Override DEFINE in PigUnit在 PigUnit 中覆盖 DEFINE
【发布时间】:2016-06-07 13:34:28
【问题描述】:

在我的 pig 脚本中,我使用 java UDF 来处理生产数据。我想用 Mock UDF 类覆盖它,在那里我将有我的虚拟实现。我的猪脚本中有 DEFINE 语句,它定义了对特定 Java UDF 类的调用。我可以覆盖 PigUnit 中的 DEFINE 语句以使其调用模拟类吗?

DEFINE InvokeActual mypackage.function.ActualFunction();

应该替换为

DEFINE InvokeActual mypackage.function.TestFunction();

如果可能的话,它可以解决我在单元测试猪脚本时遇到的大部分问题。

【问题讨论】:

    标签: unit-testing junit mocking apache-pig


    【解决方案1】:

    我看到两种情况:

    1. 我会尝试将 DEFINE 方法导出到单独的脚本并使用 importing macros。然后你可以在单元测试或实际使用时更改 DEFINE。

    2. 您可以使用相同的方法创建模拟 jar。

    一个明显的问题是,如果您重复 DEFINE InvokeActual 则映射到 java 方法将被覆盖,但我想您不希望有单独的 pig 脚本进行测试。

    【讨论】:

    • 我喜欢这个想法 1。谢谢。我一直在寻找可以直接在猪脚本中替换 DEFINE 语句的解决方案。
    • 让我知道它是否有效,请接受答案,谢谢!
    猜你喜欢
    • 2011-03-02
    • 2017-06-28
    • 2022-11-30
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多