从PIG中的时间戳中提取日期

时间:2018-03-21 07:00:46

标签: apache-pig

我正在尝试使用PIG分析日志。需要从时间戳中提取日期。以下是示例日志。 样本日志 -

122.172.200.100 - - [17/Oct/2014:00:04:36 -0400] "GET /tag/hbase-sink/ HTTP/1.1" 200 15997 "https://www.google.co.in/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36"

我已使用以下命令

加载了日志文件
logs = LOAD 'sample_log' USING org.apache.pig.piggybank.storage.apachelog.CombinedLogLoader() AS (addr: chararray, logname: chararray, user: chararray, time: chararray,method: chararray, uri: chararray, proto: chararray,status: int, bytes: int, referer: chararray, userAgent: chararray);

现在我使用DateExtractor从时间中提取日期,如下所示

foreach_logs = FOREACH logs GENERATE org.apache.pig.piggybank.evaluation.util.apachelogparser.DateExtractor(time));

现在我必须从日期中提取日期。我尝试过使用GetDay,但它没有用。谁能知道如何从日期中提取日期?

1 个答案:

答案 0 :(得分:0)

首先确保您将字段正确加载到变量time中。然后使用timeToDate(time,'yyyy/MM/dd:HH:mm:ss')转换为日期时间对象,然后使用GetDay()。假设您已正确加载数据。

foreach_logs = FOREACH logs GENERATE GetDay(ToDate(time,'dd/MMM/yyyy:HH:mm:ss Z'));