分组依据上的猪优化
Pig Optimization on Group by
假设我有一个大型数据集,符合以下架构布局
id,name,city
---------------
100,Ajay,Chennai
101,John,Bangalore
102,Zach,Chennai
103,Deep,Bangalore
....
...
我有两种 pig 代码风格,输出相同。
样式 1:
records = load 'user/inputfiles/records.txt' Using PigStorage(',') as (id:int,name:chararray,city:chararray);
records_grp = group records by city;
records_each = foreach records_grp generate group as city,COUNT(records.id) as emp_cnt;
dump records_each;
样式 2:
records = load 'user/inputfiles/records.txt' Using PigStorage(',') as (id:int,name:chararray,city:chararray);
records_each = foreach (group records by city) generate group as city,COUNT(records.id) as emp_cnt;
dump records_each ;
在第二种样式中,我使用了嵌套的 Foreach。样式 2 代码 运行 是否比样式 1 代码更快。
我想减少完成 Pig 工作所花费的总时间..
所以样式 2 代码实现了这一点?或者对总耗时没有影响?
如果有人证实我的话,那么我可以 运行 在我的集群中使用非常大的数据集
类似的代码
解决方案的成本相同。
但是,如果 records_grp
没有在其他地方使用,版本 2 允许您不声明变量并且您的脚本更短。
假设我有一个大型数据集,符合以下架构布局
id,name,city
---------------
100,Ajay,Chennai
101,John,Bangalore
102,Zach,Chennai
103,Deep,Bangalore
....
...
我有两种 pig 代码风格,输出相同。
样式 1:
records = load 'user/inputfiles/records.txt' Using PigStorage(',') as (id:int,name:chararray,city:chararray);
records_grp = group records by city;
records_each = foreach records_grp generate group as city,COUNT(records.id) as emp_cnt;
dump records_each;
样式 2:
records = load 'user/inputfiles/records.txt' Using PigStorage(',') as (id:int,name:chararray,city:chararray);
records_each = foreach (group records by city) generate group as city,COUNT(records.id) as emp_cnt;
dump records_each ;
在第二种样式中,我使用了嵌套的 Foreach。样式 2 代码 运行 是否比样式 1 代码更快。
我想减少完成 Pig 工作所花费的总时间..
所以样式 2 代码实现了这一点?或者对总耗时没有影响?
如果有人证实我的话,那么我可以 运行 在我的集群中使用非常大的数据集
类似的代码解决方案的成本相同。
但是,如果 records_grp
没有在其他地方使用,版本 2 允许您不声明变量并且您的脚本更短。