Hadoop ApachePig:获取一周中的某一天,并相应地进行分割

Hadoop ApachePig:获取一周中的某一天,并相应地进行分割,hadoop,apache-pig,Hadoop,Apache Pig,我需要把两个日期分开,忽略周六和周日。0.11.1上的内置函数将有助于获取一周中的某一天,但如何确定这是周六还是周日?有人知道吗?我的预期输出如下所述 输入: 用户从日期到日期 Raj 10/3/2013 10/8/2013 詹姆斯10/4/2013 10/7/2013 等等 预期输出: 2013年3月10日 Raj 10/4/2013 2013年7月10日 Raj 10/8/2013 詹姆斯10/4/2013 James 10/7/2013您需要编写一份UDF。您可以使用Java的类来实现这一

我需要把两个日期分开,忽略周六和周日。0.11.1上的内置函数将有助于获取一周中的某一天,但如何确定这是周六还是周日?有人知道吗?我的预期输出如下所述

输入:

用户从日期到日期

Raj 10/3/2013 10/8/2013

詹姆斯10/4/2013 10/7/2013

等等

预期输出:

2013年3月10日

Raj 10/4/2013

2013年7月10日

Raj 10/8/2013

詹姆斯10/4/2013


James 10/7/2013

您需要编写一份UDF。您可以使用Java的类来实现这一点。

因为Pig DateTime对象实际上是以毫秒为单位的Unix历元时间, 这可以通过开箱即用的清管器操作员轻松完成

(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感到满意,并且这是一个常见的需求,那么这是最好的解决方案

卡特海岸