如何在pig中嵌套for循环内实现分组和过滤器

时间:2016-08-26 21:50:03

标签: apache-pig

我是猪的新手并坚持使用算法。我有一个数据集,其中包含对象的开始日期,下降日期,市场和大小。

以下是我需要实施的内容

  1. 查找唯一的开始日期(已实施)
  2. 对于每个唯一日期过滤掉具有开始日期< =唯一日期< =放弃日期的值。
  3. 按市场对过滤后的值进行分组。
  4. 查找市场中对象的总大小。
  5. 每天每个市场的最终产量将是TotalSize。诀窍是一个物体可以在几天内存活,因此它的大小需要包含在它活着的每一天的总和计算中。对象在丢弃日期终止。

    我无法找到在猪中有效实施算法的第2,3和4步的方法。

    另一个问题是,如果可以在猪中实施这一要求。

    这是我试过的::

    req_data = FOREACH uniqueStartDays {
                                    temp = FILTER joined_data BY joined_data.startDay <= uniqueStartDays.startDay AND uniqueStartDays.startDay <= joined_data.dropDay;
                                    group_temp = GROUP temp BY market;
                                    FOREACH (group) GENERATE market, startDay, assetSizeInMb;
                            };
    

    任何帮助将不胜感激。

    Adding the sample data and the expected result 
    
    Market       Start_Time                 End_Time              Drop_Time               Size 
    Allahabad       2016-08-09 12:00        2016-08-09 1:00       2016-08-13 4:00        120 
    Allahabad       2016-08-10 2:00         2016-08-10 3:00       2016-08-12  5:00        60
    Allahabad       2016-08-09 3:00         2016-08-09 4:30       2016-08-09  5:30        80 
    
    Result:
    Market          Day             TotalSize  
    Allahabad       2016-08-09      200  (120+80)
                    2016-08-10      180  (120+60)
                    2016-08-11      180  (120+60)
                    2016-08-12      180  (120+60)
                    2016-08-13      120
    

0 个答案:

没有答案