从PIG LATIN调用Python UDF时遇到问题。我正在进行ASCII到二进制的转换,并在python中编写了一个脚本,它在python shell中运行但是如果我们在PIG中将它称为Python UDF,则会收到一条错误,说明" NameError:全局名称'格式&# 39;未定义"。有人可以告诉我你对此的想法吗?
---- Python脚本
@outputSchema("str:chararray")
def asciitobinary(st):
str = ''.join(format(ord(i),'b').zfill(8) for i in st)
return str
- PIG脚本
REGISTER 'asctobin.py' USING jython as pyudf
A = LOAD 'data.txt' USING PigStorage();
B = FOREACH A GENERATE pyudf.asciitobinary($0);
DUMP B;
Input: 00080
Expected Value: 0011000000110000001100000011100000110000
答案 0 :(得分:0)
我认为你的猪版本使用的是Jython2.5.3,它不支持str.format。
尝试类似:
<h:selectOneMenu>
<c:forEach items="#{bean.items}" var="item">
<f:selectItem itemValue="#{item.id}"
itemLabel="#{item.strName}"
p:title="Description : #{item.strDescription}"/>
</c:forEach>
</h:selectOneMenu>
此外,还有一个新的Pig版本使用Jython 2.7。