作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
您好,我正在使用 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。请帮忙。
最佳答案
您不能在 Pig 本身中引用以前的行,但您可以编写一个聚合 UDF 来接受所有行并执行所需的操作。但请记住,您还需要指定并行度 1,否则您的行将被分成 block
关于hadoop - 如何在 Pig 中检索上一行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40889609/
我是一名优秀的程序员,十分优秀!