Hadoop 三月份猪给出错误结果之间的天数

Hadoop 三月份猪给出错误结果之间的天数,hadoop,apache-pig,vertica,Hadoop,Apache Pig,Vertica,我正在尝试将vertica查询转换为Pig,该查询基本上可以找出两个日期之间的天数。当我转换代码并尝试在Pig中使用DaysBetween函数时,它只为三月份提供不同的输出 清管器结果: Y = FOREACH X GENERATE (DaysBetween((datetime)ToDate('2015-04-01'),ToDate('2015-03-01'))); Output:- (30) SELECT JULIAN_DAY('2015-04-01')-JULIAN_DAY('2015-0

我正在尝试将vertica查询转换为Pig,该查询基本上可以找出两个日期之间的天数。当我转换代码并尝试在Pig中使用DaysBetween函数时,它只为三月份提供不同的输出

清管器结果:

Y = FOREACH X GENERATE
(DaysBetween((datetime)ToDate('2015-04-01'),ToDate('2015-03-01')));
Output:- (30)
SELECT JULIAN_DAY('2015-04-01')-JULIAN_DAY('2015-03-01');
Output:- (31)
Y = FOREACH X GENERATE
(DaysBetween((datetime)ToDate('2015-03-04'),ToDate('2015-02-04')));
Output:- (28)
SELECT JULIAN_DAY('2015-03-04')-JULIAN_DAY('2015-02-04');
 Output :- 28
眩晕结果:

Y = FOREACH X GENERATE
(DaysBetween((datetime)ToDate('2015-04-01'),ToDate('2015-03-01')));
Output:- (30)
SELECT JULIAN_DAY('2015-04-01')-JULIAN_DAY('2015-03-01');
Output:- (31)
Y = FOREACH X GENERATE
(DaysBetween((datetime)ToDate('2015-03-04'),ToDate('2015-02-04')));
Output:- (28)
SELECT JULIAN_DAY('2015-03-04')-JULIAN_DAY('2015-02-04');
 Output :- 28
当我在一年中的其他月份检查相同的数据时,我没有得到任何错误

清管器结果:

Y = FOREACH X GENERATE
(DaysBetween((datetime)ToDate('2015-04-01'),ToDate('2015-03-01')));
Output:- (30)
SELECT JULIAN_DAY('2015-04-01')-JULIAN_DAY('2015-03-01');
Output:- (31)
Y = FOREACH X GENERATE
(DaysBetween((datetime)ToDate('2015-03-04'),ToDate('2015-02-04')));
Output:- (28)
SELECT JULIAN_DAY('2015-03-04')-JULIAN_DAY('2015-02-04');
 Output :- 28
眩晕结果:

Y = FOREACH X GENERATE
(DaysBetween((datetime)ToDate('2015-04-01'),ToDate('2015-03-01')));
Output:- (30)
SELECT JULIAN_DAY('2015-04-01')-JULIAN_DAY('2015-03-01');
Output:- (31)
Y = FOREACH X GENERATE
(DaysBetween((datetime)ToDate('2015-03-04'),ToDate('2015-02-04')));
Output:- (28)
SELECT JULIAN_DAY('2015-03-04')-JULIAN_DAY('2015-02-04');
 Output :- 28

我无法找到差异的原因。需要一些关于如何解决问题的建议。

将时区指定为UTC或GMT会有所帮助

Y = FOREACH X GENERATE
(DaysBetween((datetime)ToDate('2015-04-01', 'yyyy-MM-dd', 'UTC'),ToDate('2015-03-01', 'yyyy-MM-dd', 'UTC')));

我有一种感觉,这里可能有夏令时的问题。在您的第一个示例中,它跨越夏令时边界减去一个小时(可能减去前一天从上午12点到晚上11点的一天)。夏令时是03-08年。你能验证这个理论吗?我现在附近没有Hadoop集群。