从pig中的时间戳提取日期

lf3rwulv  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(377)

我试着用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,但它不起作用。有人知道如何从日期中提取日期吗?

am46iovg

am46iovg1#

首先确保将字段正确加载到变量中 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'));

相关问题