我编写了python代码,以便从日志中提取密钥。使用相同的日志,它在一台机器上运行良好。但是当我在hadoop中运行它时,它失败了。我想使用时有一些错误regex
。谁能给我一些意见?regex
不能支持hadoop吗?
这个python代码的目的是提取qry
和rc
,计算的值rc
,然后打印为qry query_count rc_count
。当在hadoop中运行它时,它会报告
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
.
我搜索谷歌,您的映射器代码中可能存在一些错误。那么我该如何解决呢?
像这样的日志格式,
通知:01-03 23:57:23:[a.cpp][b][222] show_ver=11 sid=ae1d esid=6WVj uid=D1 a=20 qry=cars qid0=293 loc_src=4 phn=0 mid =0 wvar=c op=0 qry_src=0 op_type=1 src=110|120|111 at=60942 rc=3|1|1 折扣=20 indv_type=0 rep_query=
我的python代码就是这样
import sys
import re
for line in sys.stdin:
count_result = 0
line = line.strip()
match=re.search('.*qry=(.*?)qid0.*rc=(.*?)discount',line).groups()
if (len(match)<2):
continue
counts_tmp = match[1].strip()
counts=counts_tmp.split('|')
for count in counts:
if count.isdigit():
count_result += int(count)
key_tmp = match[0].strip()
if key_tmp.strip():
key = key_tmp.split('\t')
key = ' '.join(key)
print '%s\t%s\t%s' %(key,1,count_result)