我正在尝试使用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,但它没有用。谁能知道如何从日期中提取日期?
答案 0 :(得分:0)
首先确保您将字段正确加载到变量time
中。然后使用time
将ToDate(time,'yyyy/MM/dd:HH:mm:ss')
转换为日期时间对象,然后使用GetDay()
。假设您已正确加载数据。
foreach_logs = FOREACH logs GENERATE GetDay(ToDate(time,'dd/MMM/yyyy:HH:mm:ss Z'));