【问题标题】:how to resolve date difference between Hive text file format and parquet file format如何解决 Hive 文本文件格式和 parquet 文件格式之间的日期差异
【发布时间】:2016-01-21 11:38:35
【问题描述】:

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

数据从文件到文件

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

问题: 1)我们如何解决这个问题。 2) 为什么我们会得到这些数据差异。

【问题讨论】:

  • 可以分享一下表定义和插入数据的语句吗?
  • 您当地的时区是否有可能是 UTC+04(考虑到 DST,即使用夏令时的 9 月)?

标签: hadoop hive parquet


【解决方案1】:

即使我们在从 sql server sqooping 表时也遇到了类似的问题,这是因为驱动程序或 jar 问题。

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

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

【讨论】:

    【解决方案2】:

    感谢您的帮助..

    在 Hue 中同时使用 Beeline 和 impala 查询编辑器。访问 parquet 表中的数据存储,当您通过 Hue 使用 impala 查询时会出现时间戳问题。

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-19
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 2022-11-24
      相关资源
      最近更新 更多