如何解决Hive文本文件格式和镶木地板文件格式之间的日期差异

时间:2016-01-21 11:38:35

标签: hadoop hive parquet

我们在配置单元中创建了一个外部镶木桌,使用insert overwrite将现有的文本文件数据插入到外部镶木桌中。 但我们确实观察到现有文本文件中的日期与镶木地板文件不匹配。

数据从文件

txt文件日期:2003-09-06 00:00:00 镶木地板文件日期:2003-09-06 04:00:00

问题: 1)我们如何解决这个问题。 2)为什么我们在数据中出现这些差异。

2 个答案:

答案 0 :(得分:0)

当我们从sql server中对表进行sqooping时,我们遇到了类似的问题,这是因为驱动程序或jar问题。

当您进行插入覆盖时,请尝试使用强制转换为日期字段。

如果您遇到任何问题,请告知我们。

答案 1 :(得分:0)

感谢您的帮助..

在顺化使用beeline和impala查询编辑器。访问镶木桌中的数据存储,当您通过Hue使用impala查询时出现时间戳问题。

这很可能与Hive和Impala处理时间戳值的已知差异有关:
- 当Hive将时间戳值存储为Parquet格式时,它会将本地时间转换为UTC时间,当它读取数据时,它会转换回本地时间。
- 另一方面,Impala在读取时间戳字段时不进行转换,因此返回UTC时间而不是本地时间。

如果您的服务器位于EST时区,则可以解释+ 4h时间偏移,如下所示:
- 示例中的时间戳2003-09-06 00:00应理解为EST EDT时间(9月06日为夏令时,因此为UTC-4h时区)
- 当由Hive存储时,+ 4h被添加到时间戳中 - 当Hive读回时,减去相同的偏移量,得到正确的值
- Impala回读时未进行任何更正,因此显示2003-09-06 04:00:00