在 Apache Pig 中,过滤操作是通过 FILTER 操作符来实现的。FILTER 操作允许你基于指定的条件从数据集中选择满足条件的记录,而过滤掉不符合条件的记录。

以下是一个简单的例子,演示如何使用 FILTER 操作符:
-- 载入数据
A = LOAD 'data.txt' USING PigStorage(',') AS (name:chararray, age:int);

-- 过滤出年龄大于 25 的记录
B = FILTER A BY age > 25;

-- 显示结果
DUMP B;

在上述例子中,FILTER A BY age > 25; 将数据集 A 中的记录过滤,只保留年龄大于 25 的记录,结果存储在数据集 B 中。

FILTER 操作接受任何产生布尔值的表达式作为过滤条件。你可以使用比较运算符、逻辑运算符等来构建条件。例如,你可以使用逻辑运算符 AND 和 OR 来组合多个条件。
-- 过滤出年龄大于 25 且名字不为空的记录
C = FILTER A BY age > 25 AND name IS NOT NULL;

-- 显示结果
DUMP C;

在上述例子中,FILTER A BY age > 25 AND name IS NOT NULL; 过滤出年龄大于 25 且名字不为空的记录。

过滤操作通常与 FOREACH...GENERATE 结构一起使用,以选择和处理特定的字段。
-- 选择并处理满足条件的字段
D = FOREACH C GENERATE name, age * 2;

-- 显示处理后的结果
DUMP D;

在上述例子中,FOREACH C GENERATE name, age * 2; 对满足条件的记录选择名字和年龄字段,并将年龄字段乘以 2。

总体而言,FILTER 操作是在 Apache Pig 中用于选择满足特定条件的记录的重要工具,使得你能够方便地对数据集进行筛选。


转载请注明出处:http://www.zyzy.cn/article/detail/11101/Apache Pig