我有一臺機器數據進入hdfs如下,第8個字段是UTC時間(060037),我需要將它轉換爲IST並使時間格式爲hh:mm:使用SS豬如何將UTC時間轉換爲使用豬的IST
VTS,01,0097,9739965515,NM,GP,20,060037,V,0000.0000,N,00000.0000,E,0.0,0.0,061114,0068,00,4000,00,999,149,9594
VTS,01,0097,9739965515,SP,GP,33,060113,V,0000.0000,N,00000.0000,E,0.0,0.0,061114,0068,00,4000,00,999,152,B927
使用字符串函數我試圖將其轉換爲Unix日期格式,現在我得到的時間像2014-11-06 06:01:13
它在UTC格式如何將其轉化爲IST有什麼inbuild功能可做到這一點?
A = LOAD '/user/hue/Anas' AS (line:chararray);
B = FOREACH A {
splitRow = TOKENIZE(line,'+++');
GENERATE FLATTEN(splitRow) AS newList;
}
C = FOREACH B GENERATE FLATTEN(STRSPLIT(newList,',',23));
D = FILTER C BY $1==01;
E = foreach D generate $7 as time,$15 as date;
F = foreach E generate SUBSTRING(time,0,2) as hh,SUBSTRING(time,2,4) as mm,SUBSTRING(time,4,6) as ss,SUBSTRING(date,0,2) as date,SUBSTRING(date,2,4) as month,SUBSTRING(date,4,6) as year;
G = foreach F generate CONCAT('20',CONCAT(year,CONCAT('-',CONCAT(month,CONCAT('-',date))))) as date,CONCAT(hh,CONCAT(':',CONCAT(mm,CONCAT(':',ss)))) as time;
H = FOREACH G GENERATE CONCAT(date,CONCAT(' ',time)) AS UTC;
DUMP H;
1)使用CONCAT作爲CONCAT - 全部大寫,2)檢查是否可以使用內置的ToDate UDF來實現您的結果,3)您還可以檢查其他第三方庫的類似UDF – mbaxi 2014-11-06 12:11:44
這個討論可能對您有所幫助http :// stackoverflow.com/questions/19140126/pig-3rd-party-udf-clarification – mbaxi 2014-11-06 12:13:56
@AnasA和另一個選項是編寫自己的UDF,它會做你的轉換 – 2014-11-06 12:24:42