如何在加入两个数据集和分组后找到平均值Pig中
问题描述:
我有两个数据集EmployeeDetail包含4列(id,name,gender,location)和SalaryDetail(id,salary)。我加入了两套数据集并将它们分组为位置。如何在加入两个数据集和分组后找到平均值Pig中
EmpDetail = load '/Users/bmohanty6/EmployeeDetails/EmpDetail.txt' as (id:int, name:chararray, gender:chararray, location:chararray);
SalaryDetail = load '/Users/bmohanty6/EmployeeDetails/EmpSalary.txt' as (id:int, salary:float);
JoinedEmpDetail = join EmpDetail by id, SalaryDetail by id;
GroupedByLocation = group JoinedEmpDetail by location;
DUMP GroupedByLocation给了我期望的正确结果。现在,当我尝试取平均值使用以下行时,
AverageSalary = foreach GroupedByLocation generate group, AVG(SalaryDetail.salary);
它会抛出错误。
<line 11, column 58> Could not infer the matching function for org.apache.pig.builtin.AVG as multiple or none of them fit. Please use an explicit cast.
我也试过以下方法。但有同样的错误。
AverageSalary = foreach GroupedByLocation {
Sum = SUM(SalaryDetail.salary);
Count = COUNT(SalaryDetail.salary);
avgSal = Sum/Count;
generate group as location, avgSal;
};
这次错误是:
Could not infer the matching function for org.apache.pig.builtin.SUM as multiple or none of them fit. Please use an explicit cast.
任何人都可以请建议我做这件事的正确途径。
谢谢Sivasakthi Jayaraman回答我的问题。
AverageSalary = foreach GroupedByLocation generate group, AVG(JoinedEmpDetail.SalaryDetail::salary);
这给了我每个位置的平均工资。 现在我试图找出location
每个性别的平均工资。所以我试图用gender
组合GroupedByLocation
变量。但是面临一些问题。
GroupdByGender = foreach GroupedByLocation {
genderGrp = group JoinedEmpDetail by JoinedEmpDetail.EmpDetail::gender;
avgSalary = foreach genderGrp generate group, AVG(JoinedEmpDetail.SalaryDetail::salary);
generate group as location, JoinedEmpDetail.EmpDetail::gender, avgSalary;
};
我得到这个错误
Syntax error, unexpected symbol at or near 'JoinedEmpDetail'
任何人都可以请帮助。
答
您不能像这样访问salary
列,首先需要投影JoinedEmpDetail
关系,然后访问salary
列。
你可以试试下面的stmt吗?
AverageSalary = foreach GroupedByLocation generate group, AVG(JoinedEmpDetail.SalaryDetail::salary);
谢谢,这工作。 – Biswa 2015-01-04 13:46:05
我试图找出每个地点的性别平均工资。所以我尝试在GroupedByLocation变量内按性别进行分组。但是面临一些问题。我也更新了这个问题。 – Biswa 2015-01-05 07:10:02
@Biswa,一旦答案被接受,请不要更新相同的问题,但ppl不会查看此问题。您能否将此作为新问题发布,并提供一些示例输入数据和预期输出。 – 2015-01-05 16:36:02