2013-04-18 26 views
2

假设字段time看起来像2013-01-01T00:00:00.000Zpiggybank.jar已经被导入,并命令EXTRACT已经被定义(DEFINE EXTRACT org.apache.pig.piggybank.evaluation.string.EXTRACT();)什么是提取字段year, month, day, hour, minute, second的最佳方式?这就是我迄今为止所做的:处理与正则表达式的日期在Apache的猪

data = FOREACH data GENERATE FLATTEN(EXTRACT(time, '(\\d+)-(\\d+)-(\\d+)T(\\d+):(\\d+):(\\d+).(\\s+)')) 
     AS (
      year: int, 
      month: int, 
      day: int, 
      hour: int, 
      minute: int, 
      second: int, 
      tail: chararray 
     ); 

回答

4

由于Pig 0.11,您可以使用DateTime类型。

A = LOAD 'data' AS (date:chararray); 
B = FOREACH A GENERATE ToDate(date) AS date; 
C = FOREACH B GENERATE GetMonth(date) as month; 

你可以在这里使用这些功能:DateTime functions

如果你不工作0.11,你可以写一个UDF或求助于您发布的正则表达式。