如何解决hive文本文件格式和parquet文件格式之间的日期差异

hjqgdpho  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(446)

我们在配置单元中创建了一个外部Parquet表,使用insert overwrite将现有的文本文件数据插入到外部Parquet表中。但我们观察到现有文本文件中的日期与Parquet文件不匹配。
数据从到文件
txt文件日期:2003-09-06 00:00:00Parquet地板文件日期:2003-09-06 04:00:00
问题:1)如何解决这个问题。2) 为什么我们得到这些数据上的差异。

643ylb08

643ylb081#

即使我们在从SQLServer进行表sqoop时也遇到了类似的问题,这是因为驱动程序或jar问题。
在执行插入覆盖时,请尝试对日期字段使用强制转换。
这应该工作让我知道如果你面临任何问题。

vzgqcmou

vzgqcmou2#

谢谢你的帮助。。
在hue中同时使用beeline和impala查询编辑器。访问parquet表中的数据存储,通过hue使用impala查询时会出现时间戳问题。
这很可能与hive和impala处理时间戳值的方式的已知差异有关:
-当hive将时间戳值存储为parquet格式时,它将本地时间转换为utc时间,当它读出数据时,它将转换回本地时间。
-但另一方面,impala在读取timestamp字段时不进行转换,因此返回utc时间而不是本地时间。
如果您的服务器位于est时区,这可以解释+4h时间偏移,如下所示:
-本例中的时间戳2003-09-06 00:00应理解为美国东部时间东部标准时间(9月6日为夏令时,因此为utc-4h时区)
-+4h被添加到hive存储时的时间戳中
-当hive读回相同的偏移量时,它会被减去,得到正确的值
-当 Impala 读回时,没有做任何修正,因此显示2003-09-06 04:00:00

相关问题