【问题标题】:Hive create query with timestamp having format AM/PMHive 使用格式为 AM/PM 的时间戳创建查询
【发布时间】:2018-11-22 12:35:38
【问题描述】:

我有一个文件,其中只有一个日期列,其中包含格式为 '10/2/2017 10:56:00 AM'

的日期

我想在此文件上创建一个外部配置单元表,但由于 AM/PM 格式配置单元时间戳无法识别它,是否有指向此的指针?

【问题讨论】:

    标签: hive hiveql


    【解决方案1】:

    您可以创建 具有时间戳格式的配置单元表,然后在 table properties 中映射您的数据时间戳格式。

    示例:

    我有一个包含以下数据的 txt 文件:

    bash$ cat t1.txt
          9/1/2016 11:31:21 AM
          10/2/2017 10:56:00 AM
    

    使用以下命令创建一个配置单元表:

    hive> create external table i(ts timestamp)
          row format delimited
          fields terminated by ',' 
          stored as textfile
          TBLPROPERTIES("timestamp.formats"="MM/dd/yyyy hh:mm:ss a");
    

    从表格中选择:

    hive> select * from i;
    +------------------------+--+
    |          i.ts          |
    +------------------------+--+
    | 2016-09-01 11:31:21.0  |
    | 2017-10-02 10:56:00.0  |
    +------------------------+--+
    

    【讨论】:

    • 感谢回复,它可以工作,但列的数据类型是字符串我希望它是时间戳
    • @MaheshJ,你的 source data field value is enclosed in ""(double quotes)? ,那么你不能定义为 timestamp 格式,除非你使用 Regex serdeexclude ""(double quotes) 并只捕获 @987654329 @值。
    【解决方案2】:

    您可以使用字符串作为数据类型,而不是使用时间戳作为数据类型并尝试一下

    【讨论】:

      【解决方案3】:

      好的。在我看来,无论您的数据类型是时间戳还是字符串格式,它都不会产生太大影响。因为无论您尝试使用时间戳格式来实现什么,我们也可以使用字符串格式来实现

      【讨论】:

        猜你喜欢
        • 2020-05-23
        • 1970-01-01
        • 2022-01-19
        • 2020-12-17
        • 1970-01-01
        • 2021-12-29
        • 2013-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多