我有一个python脚本,它在Apache下在Jython中执行。它用@schemaFunction resp定义了一些函数。@outputSchemaFunction装饰师。
我想在Pig外部用一个独立的python主脚本测试这些函数,这个脚本就在“普通的本地Python解释器下”。然而,当我在本地Python系统下运行脚本时,解释器会抱怨:"NameError: name 'outputSchema' is not defined",我理解独立Python显然不支持这些装饰器。
如何在本地Python解释器中测试脚本?我是否可以将调用脚本中的装饰器定义为“空”?或者有类似命令行选项的东西可以忽略装饰器吗?
发布于 2013-08-14 16:29:59
我用的是猪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您可以通过将print __name__放在myudfs.py的顶部来验证这一点。
https://stackoverflow.com/questions/18223898
复制相似问题