您好我正在使用 Pig 来移动 HBASE 中的值。我试图在条件执行,如果它是成功我将连接一个值,如果它失败我将连接上一行的值。 为此,我尝试下面的代码,但它没有工作,并抛出错误。
代码:
STOCK_A = LOAD '/user/cloudera/pat.hl7' USING PigStorage('|');
data = FILTER STOCK_A BY ($0 matches '.*OBR.*' or $0 matches '.*OBX.*');
MSH_DATA = FOREACH data GENERATE ($0 == 'OBR' ? CONCAT('HL','OBR',(chararray)$1) : CONCAT('HL','OBR',(chararray)(data -1).$1)) AS Uid, $1 AS id, $5 AS result, $3 AS resultname;
错误:
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 14, column 122> mismatched input '.' expecting RIGHT_PAREN
我希望在其他行中复制连接值,直到我到达另一个 OBR 。请帮助。
答案 0 :(得分:1)
您不能在Pig本身中引用先前的行,但您可以编写将接受所有行并执行所需行的聚合UDF。但请记住,您还需要指定并行度1,否则您的行将以块的形式分割
答案 1 :(得分:0)
我认为你可以Stitch,Over和lag来计算前一行的数据。虽然不确定效率。