1

我有一个在 Apache Pig 下的 Jython 中执行的 python 脚本。它分别定义了一些函数@schemaFunction。装饰 @outputSchemaFunction师。

我想在“普通本地 Python 解释器”下使用 Pig 之外的独立 python 主脚本测试这些函数。但是,当我在本地 Python 系统下运行脚本时,解释器抱怨:"NameError: name 'outputSchema' is not defined"我知道独立 Python 显然不支持这些装饰师。

如何在本地 Python 解释器中测试我的脚本?我可以以某种方式将调用脚本中的装饰器定义为“空”吗?或者是否有类似命令行选项来忽略装饰器?

4

1 回答 1

6

我正在使用猪 0.10.0。

当模块被 pig 用作 UDF 时,它设置__name____lib__. 通常,__name__设置为模块的实际名称(减去 .py)。因此,您可以为if 块定义一些空的装饰器outputSchemaoutputSchemaFunction就像是:

myudfs.py

#!/usr/bin/python

if __name__ != '__lib__':
    def outputSchema(dont_care):
        def wrapper(func):
            def inner(*args, **kwargs):
                return func(*args, **kwargs)
            return inner
        return wrapper

# Your UDFs go here

您可以通过print __name__myudfs.py.

于 2013-08-14T16:29:59.430 回答