Hive Python UDF

时间:2017-09-04 06:37:25

标签: python hadoop hive hive-udf

我正在使用这个Python UDF脚本:

import sys
import collections 
import datetime
import re

try:
    for line in sys.stdin: 
        line=line.strip()
        number,sd=line.split('\t')
        sd=sd.lower()
        sd=sd.split(' ')
        new_sd_list=collections.OrderedDict(collections.Counter(sd))
        new_sd=' '.join(new_sd_list)
        print('\t'.join([str(number),str(new_sd])))
except:
    print(sys.exc_info())

在Putty中执行以下命令。

SELECT TRANSFORM(number,shortdescription) USING 'python name.py' \
   AS (number,shortdescription) FROM table;

我收到此错误:

  

引起:org.apache.hadoop.hive.ql.metadata.HiveException:Hive运行时错误处理行{“number”:“ABC00548”,“shortdescription”:“”在India Optimizer中检查主数据不一致。“ }

     

失败:执行错误,从org.apache.hadoop.hive.ql.exec.mr.MapRedTask返回代码2   MapReduce工作推出:   Stage-Stage-1:Map:4 HDFS读取:0 HDFS写入:0 FAIL   总MapReduce CPU使用时间:0毫秒

1 个答案:

答案 0 :(得分:0)

import sys
import collections 
import datetime
import re

try:
    for line in sys.stdin: 
        line=line.strip()
        number,sd=line.split('\t')
        sd=sd.lower()
        sd=sd.split(' ')
        new_sd_list=collections.OrderedDict(collections.Counter(sd))
        new_sd=' '.join(new_sd_list)
        print('\t'.join([str(number),str(new_sd)])) #syntax error
except:
    print(sys.exc_info())