📜  Apache Pig-过滤运算符(1)

📅  最后修改于: 2023-12-03 14:59:20.771000             🧑  作者: Mango

Apache Pig-过滤运算符

在Apache Pig中,“过滤”是一个重要的操作,它可以通过使用过滤运算符来实现。过滤运算符允许您从大型数据集中筛选出需要的数据。

过滤运算符语法

过滤运算符的基本语法如下所示:

RelationName = FILTER RelationName BY LogicalExpression;

其中,RelationName是您要过滤的数据集的名称,LogicalExpression是一个逻辑表达式,用于筛选出匹配条件的数据。

过滤运算符的例子

假设我们有一个包含以下数据的student.txt文件:

John,19,Male
Mary,20,Female
Bob,18,Male
Lisa,19,Female

我们想要从中筛选出年龄大于等于19岁的学生。可以使用以下Pig脚本:

student = LOAD 'student.txt' USING PigStorage(',') 
            AS (name:chararray, age:int, gender:chararray);

filtered_student = FILTER student BY age >= 19;

DUMP filtered_student;

输出结果为:

(Jon,19,Male)
(Lisa,19,Female)
多重条件过滤

除了单条件过滤外,您还可以在Pig中使用多重条件过滤。假设我们有一个包含以下数据的student2.txt文件:

John,19,Male,Math
Mary,20,Female,English
Bob,18,Male,Math
Lisa,19,Female,History

我们想要从中筛选出年龄大于等于19岁且所学科目为Math的学生。可以使用以下Pig脚本:

student2 = LOAD 'student2.txt' USING PigStorage(',') 
            AS (name:chararray, age:int, gender:chararray, subject:chararray);

filtered_student2 = FILTER student2 BY age >= 19 AND subject == 'Math';

DUMP filtered_student2;

输出结果为:

(John,19,Male,Math)
逻辑运算符

在多重条件过滤中,您可以使用逻辑运算符AND,OR和NOT来连接多个逻辑条件。

以下是一个使用OR运算符的示例:

student3 = LOAD 'student2.txt' USING PigStorage(',') 
            AS (name:chararray, age:int, gender:chararray, subject:chararray);

filtered_student3 = FILTER student3 BY age >= 19 OR subject == 'Math';

DUMP filtered_student3;

输出结果为:

(John,19,Male,Math)
(Mary,20,Female,English)
(Lisa,19,Female,History)
总结

过滤运算符是解析和处理大型数据集过程中的一个重要步骤。Pig脚本的过滤功能可以根据指定的条件来提取需要的数据,同时也支持逻辑条件运算符,可以根据多个条件来筛选数据,大大提高了对数据的处理效率。