从时间戳至今的Apache Pig

弗兰格尔

我正在尝试使用Amabari中的Apache Pig分析一些数据

在这种特定情况下,我有一个问题...我有一列以这种特定格式编写的时间戳记

1433306146000

1422814565122

使用在线转换器,如果我输入1433306146000,则输出为08/30/47389 @ 12:06 pm(UTC),但事实并非如此,实际上,如果我手动删除最后3个数字(1433306146),则结果为06/03 / 2015 @ 4:35 am(UTC)。

那么,这是在pig中删除timestamp列中最后3个数字的方法吗?而且主要的问题是:具有功能

GetDay(日期时间)

如果我通过了时间戳,它将起作用吗?还是有一种不同的方法可以从时间戳中生成准星期几?

谢谢

疯子人

不确定您使用了哪个转换器作为时间戳,但此处显示正确的格式。ToDate运算符不对复杂数据类型(例如bag)起作用。这就是为什么在尝试在组上使用它时会出错的原因。同样,有时chararrays的行为是不可预测的,因此经验法则是对时间戳使用长基本类型。下面的代码应该可以工作。

input=LOAD '..Fra/data/prova/*' AS(old_timestamp:long,timestamp:long);
result=FOREACH input GENERATE 
  GetDay(ToDate(old_timestamp)),
  GetDay(ToDate(timestamp));
DUMP result; 

同样,如果您不想更改架构,显然也可以从chararray转换为long。只有这会改变:

result=FOREACH input GENERATE 
  GetDay(ToDate((long)old_timestamp)),
  GetDay(ToDate((long)timestamp));

还请注意,ToDate总是需要毫秒,因此,如果将它们切断,您将期望看到Unix默认的开始时间为1970-01-01,干杯!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章