我们在配置单元中创建了一个外部镶木桌,使用insert overwrite将现有的文本文件数据插入到外部镶木桌中。 但我们确实观察到现有文本文件中的日期与镶木地板文件不匹配。
数据从文件
txt文件日期:2003-09-06 00:00:00 镶木地板文件日期:2003-09-06 04:00:00
问题: 1)我们如何解决这个问题。 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