hadoop - Apache PIG : apply LIMIT only if parameter is > 0

标签 hadoop apache-pig

如何在 PIG 中的 foreach 中实现以下目标:

REL = foreach RELS {
 if ( cnt == 0 )
 limited_result = NULL/Empty;
 else
 limited_result = LIMIT results cnt ;

 generate limited_result.some_field;
}

我不能使用 LIMIT,因为它会验证“cnt”是否大于 0; 我尝试使用 SPLIT,但显然它在 foreach 中不受支持。

最佳答案

FOREACH 之前 FILTER 怎么样?

REL = foreach (filter RELS by cnt > 0) {
 limited_result = LIMIT results cnt ;
 generate limited_result.some_field;
}

如果还需要cnt为0的记录,可以先SPLIT,然后在cnt为0时生成一个空包:

split RELS into ZERO if cnt == 0, NONZERO if cnt > 0;

NZ_LIM = foreach NONZERO {
 result = LIMIT results cnt ;
 generate limited_result.some_field;
}
Z_LIM = foreach ZERO generate {} as some_field;

REL = union NZ_LIM, Z_LIM;

关于hadoop - Apache PIG : apply LIMIT only if parameter is > 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14465632/

相关文章:

C++ 需要一些关于 Pig Latin 字符串的建议

hadoop - Pig 将架构更改为所需类型

mongodb - 如何使用 mongo-hadoop 从 Pig 上的 BSON 文件加载数组?

scala - 递归数据框操作

hadoop - hive -标签计数

join - 记录主动溢出到 Hadoop Pig 中?

hadoop - pig :错误1045:无法推断出COUNT的匹配函数,因为它们是多个或都不适合。请使用显式强制转换

database - 在 presto、hive 中查询数组结构

java - hadoop 无法启动从机 "fatal error"

Hadoop Wordcount 程序编译错误