以下是一个简单的 FOREACH 操作的示例:
-- 载入数据
A = LOAD 'data.txt' USING PigStorage(',') AS (name:chararray, age:int);
-- 对每个记录生成新的字段
B = FOREACH A GENERATE name, age, age * 2 AS double_age;
-- 显示结果
DUMP B;
在上述例子中,FOREACH A GENERATE name, age, age * 2 AS double_age; 对数据集 A 中的每个记录,生成新的字段 double_age,其值是 age 字段的两倍。
FOREACH 操作允许你使用自定义的表达式、函数或操作来处理数据集的每个记录。你可以根据需要执行各种计算和转换操作,以满足特定的需求。
-- 使用 UDF 对每个记录的 name 字段执行转换
DEFINE UpperCaseName org.apache.pig.piggybank.evaluation.string.UPPER();
-- 对每个记录执行自定义的转换操作
C = FOREACH A GENERATE UpperCaseName(name) AS upper_case_name, age + 5 AS increased_age;
-- 显示结果
DUMP C;
在上述例子中,DEFINE UpperCaseName org.apache.pig.piggybank.evaluation.string.UPPER(); 定义了一个名为 UpperCaseName 的用户自定义函数(UDF),用于将字符串转换为大写。然后,FOREACH A GENERATE UpperCaseName(name) AS upper_case_name, age + 5 AS increased_age; 对每个记录使用自定义的函数和表达式执行转换操作。
总体而言,FOREACH 操作符是在 Apache Pig 中进行记录级别操作和转换的核心工具,它允许你以灵活的方式处理数据集的每个记录。
转载请注明出处:http://www.pingtaimeng.com/article/detail/11104/Apache Pig