Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 如何使用pig将UTC时间转换为IST_Date_Hadoop_Apache Pig - Fatal编程技术网

Date 如何使用pig将UTC时间转换为IST

Date 如何使用pig将UTC时间转换为IST,date,hadoop,apache-pig,Date,Hadoop,Apache Pig,我有一个机器数据进入hdfs,如下所示,第8个字段是UTC时间(060037),我需要将其转换为IST,并使用pig将时间格式设置为hh:mm:ss 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

我有一个机器数据进入hdfs,如下所示,第8个字段是UTC时间(060037),我需要将其转换为IST,并使用pig将时间格式设置为hh:mm:ss

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日期格式,现在我得到了UTC格式的时间,如
2014-11-06 06 06:01:13
its如何将其转换为IST有任何内置函数可用于此操作吗

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;

你试过用“小猪银行”吗

我认为format函数可以做很多你想要的事情


您可能需要为IST转换编写自己的UDF,但这可以通过python或ruby内联完成,或者……

请在现有代码中添加以下3行代码,这样就可以了

I = FOREACH H GENERATE ToDate(UTC,'yyyy-MM-dd HH:mm:ss','UTC') AS UTCTime;
J = FOREACH I GENERATE ToDate(ToString(UTCTime,'yyyy-MM-dd HH:mm:ss.SSSZ'),'yyyy-MM-dd HH:mm:ss.SSSZ','Asia/Kolkata') AS ISTTime;
DUMP J
UTC时间的输出:

(2014-11-06 06:00:37)
(2014-11-06 06:01:13)
(2014-11-06T11:30:37.000+05:30)
(2014-11-06T11:31:13.000+05:30)
IST时间的输出:

(2014-11-06 06:00:37)
(2014-11-06 06:01:13)
(2014-11-06T11:30:37.000+05:30)
(2014-11-06T11:31:13.000+05:30)

这个ISTTime在datetime对象中,现在您可以使用所有内置函数(GetDay(),GetTime()等)。

1)使用Concat作为Concat-所有大写,2)检查是否可以使用内置的ToDate UDF来实现您的结果,3)您也可以检查其他第三方LIB是否有类似的UDF。此讨论可能对您有所帮助@AnasA,另外一个选项是编写您自己的UDF,这将完成您的任务conversion@Anas,发布了将UTC转换为IST时间的解决方案。