pig udf中python代码的正确输入/输出?

2024-09-30 00:27:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简短的python脚本:

import langid
import sys

for pig_tuple in sys.stdin:
    cols = pig_tuple.split()

    if len(cols) < 2:
        sys.exit(0)

    try:
        id = int(cols[0])
        text = " ".join(cols[1:])
    except:
        sys.exit(0)

    (lang,prob) = langid.classify(text)
    print "%s\t%s" %(id,lang)

sys.exit(0)

我想把它放在猪的脚本里。我试过了:

^{pr2}$

但我得到:

2013-03-29 15:53:22,290 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Failed!
2013-03-29 15:53:22,303 [main] ERROR org.apache.pig.tools.grunt.GruntParser - ERROR 2999: Unexpected internal error. java.lang.String cannot be cast to org.apache.pig.data.Tuple
Details at logfile: /home/isl/ryan/src/main/pigScripts/pig_1364597410350.log
2013-03-29 15:53:22,306 [main] ERROR org.apache.pig.tools.grunt.GruntParser - ERROR 2999: Unexpected internal error. java.lang.String cannot be cast to org.apache.pig.data.Tuple
Details at logfile: /home/isl/ryan/src/main/pigScripts//src/main/pigScripts/pig_1364597410350.log
2013-03-29 15:53:22,308 [main] ERROR org.apache.pig.tools.grunt.GruntParser - ERROR 2999: Unexpected internal error. java.lang.String cannot be cast to org.apache.pig.data.Tuple
Details at logfile: /home/isl/ryan/src/main/pigScripts//src/main/pigScripts/pig_1364597410350.log
2013-03-29 15:53:22,311 [main] ERROR org.apache.pig.tools.grunt.GruntParser - ERROR 2999: Unexpected internal error. java.lang.String cannot be cast to org.apache.pig.data.Tuple
Details at logfile: /home/isl/ryan/src/main/pigScripts/src/main/pigScripts/pig_1364597410350.log
2013-03-29 15:53:22,313 [main] ERROR org.apache.pig.tools.grunt.GruntParser - ERROR 2999: Unexpected internal error. java.lang.String cannot be cast to org.apache.pig.data.Tuple
Details at logfile: /home/isl/ryan/src/main/pigScripts/src/main/pigScripts/pig_1364597410350.log

目录/data/test/compiled_python是chmod'd到777的,当我从shell运行这个目录时:

-bash-3.2$ echo 14353 I can haz pigscriptz? | python /data/test/compiled_python/langid_command_line.py 
14353   eu

??在


Tags: orgsrclangdatamainapachesyserror
1条回答
网友
1楼 · 发布于 2024-09-30 00:27:08

AS (pid:chararray,planguage:chararray)告诉pig期望输出一个字符串元组,但返回制表符分隔的字符串。你应该把结果打印出来

print "(%s,%s)" %(id,lang)

or use the python UDF integration

相关问题 更多 >

    热门问题