hal*_*leo 1 python testing decorator apache-pig
我有一个python脚本,它在Apache Pig下的Jython中执行.它用@schemaFunctionresp 定义了一些函数.该 @outputSchemaFunction装饰.
我想在Pig之外用一个独立的python主脚本在"普通的本地Python解释器"下测试这些函数.但是当我在本地Python系统下运行脚本时,解释器抱怨:"NameError: name 'outputSchema' is not defined"我明白独立的Python显然不支持这些装饰.
如何在本地Python解释器中测试我的脚本?我能以某种方式将调用脚本中的装饰器定义为"空"吗?或者是否有类似命令行选项来忽略装饰器?
我正在使用猪0.10.0.
当猪将模块用作UDF时,它将设置__name__为__lib__.通常,__name__设置为模块的实际名称(减去.py).因此,您可以在if块内部outputSchema和outputSchemaFunction内部定义一些空装饰器.就像是:
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
Run Code Online (Sandbox Code Playgroud)
您可以通过放置print __name__在顶部来验证这一点myudfs.py.