Apache PIG:获取星期几并进行相应分割

时间:2013-10-03 07:07:39

标签: hadoop apache-pig

我需要在两个之间分割日期并忽略星期六和星期日。内置于0.11.1的功能将有助于获得一周中的某一天,但如何确定是周六还是周日?有人有任何想法吗?我的预期产出如下所述。

输入:

User Fromdate Todate

Raj 10/3/2013 10/8/2013

James 10/4/2013 10/7/2013

等。

预期输出:

Raj 10/3/2013

Raj 10/4/2013

Raj 10/7/2013

Raj 10/8/2013

James 10/4/2013

James 10/7/2013

2 个答案:

答案 0 :(得分:2)

由于Pig DateTime对象的确是Unix纪元时间(以毫秒为单位), 这可以通过开箱即用的Pig操作员轻松完成。

(DaysBetween(ToDate('10/3/2013','MM/dd/yyyy'),ToDate(0L)) + 4L) % 7    
  • 在0 ... 6范围内产生一个长的长度,其中0 =太阳,1 =星期一,......等
  • 0L代表1970年1月1日,星期四
  • 添加4L天会使0 =星期日

从Unix命令行确认这是如此:

$>  date -d '1/1/1970' +%w-%a   
4-Thu     
$>  date -d '10/3/2013' +%w-%a  
4-Thu

当然,如果你对UDF感到满意,这是一个常见的要求,那就是最好的解决方案。

Carter Shore

答案 1 :(得分:0)

您需要编写UDF。您可以使用Java的Calendar类来执行此操作。