0

PIG LATIN から Python UDF を呼び出すときに問題が発生しました。私は ASCII からバイナリへの変換を行っており、python シェルで動作するスクリプトを python で作成しましたが、それを PIG で Python UDF として呼び出すと、「NameError: グローバル名 'format' が定義されていません」というエラーが表示されます。誰かがこれについてあなたの考えを教えてもらえますか?

---- 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
4

1 に答える 1

0

あなたの豚のバージョンは、str.formatをサポートしていないJython2.5.3を使用していると思います。

次のようなものを試してください:

'%b' % ord(i)

さらに、Jython 2.7 を使用する新しい Pig バージョンが登場します。

于 2016-05-28T15:48:21.010 に答える