【问题标题】:PIG Script How toPIG 脚本如何
【发布时间】:2015-04-28 06:13:35
【问题描述】:

我正在尝试清理此员工志愿者数据。无法跟踪员工是否已经是注册志愿者,因此他可以注册为新志愿者并获得新的 VOLUNTEER_ID。我有一个数据输入,我可以将每个 VOLUNTEER_ID 与其 EMP_ID 联系起来。志愿者数据需要清理,这样我们才能弄清楚员工是如何从一个志愿者级别移动到另一个级别以及何时移动的。

业务逻辑是,当有重叠日期时,我们在 start_date 和 end_date 之间的时间范围内将最高级别分配给员工。

我发布了一个输入数据样本以及输出应该是什么。

是否可以使用 PIG 脚本来执行此操作?有人可以帮我吗

输入:

EMP_ID  VOLUNTEER_ID    V_LEVEL STATUS  START_DATE  END_DATE
10001   100               1      A       1/1/2006   12/31/2007
10001   200               1      A       5/1/2006   
10001   100               1      A       1/1/2008   
10001   300               3      P       3/1/2008   3/1/2008
10001   300               3      A       3/2/2008   12/1/2008
10001   1001              2      A       5/1/2008   6/30/2008
10001   1001              3      A       7/1/2008   
10001   300               2      A       12/2/2008  

需要输出:(输出中不需要 VOLUNTEER_ID,但在下面添加以显示选择了哪个 ID 用于输出,哪个没有)

EMP_ID  VOLUNTEER_ID    V_LEVEL STATUS  START_DATE  END_DATE
10001   100              1       A       1/1/2006   12/31/2007
10001   300              3       P       3/1/2008   3/1/2008
10001   300              3       A       3/2/2008   12/1/2008
10001   1001             2       A       5/1/2008   6/30/2008
10001   1001             3       A       7/1/2008   

【问题讨论】:

    标签: hadoop mapreduce apache-pig bigdata


    【解决方案1】:

    您似乎希望数据中每个 V_LEVELSTATUSEMP_IDVOLUNTEER_ID 的开始日期最早的行

    首先我们添加一个 unix 时间列,然后找到该列的最小值(这是 pig 的最新版本,因此您可能需要更新您的版本)。

    data_with_unix = foreach data generate EMP_ID, VOLUNTEER_ID, V_LEVEL, STATUS, START_DATE, END_DATE, ToUnixTime((datetime)START_DATE) as unix_time;
    grp = group data_with_unix by (EMP_ID, VOLUNTEER_ID, V_LEVEL, STATUS);
    max_date = foreach grp generate group, MIN(data_with_unix.unix_time);
    

    然后将开始和结束日期加入您的数据集中,因为目前似乎没有办法将 unix 时间转换回日期。

    【讨论】:

      猜你喜欢
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      相关资源
      最近更新 更多