美文网首页
sqoop1 导入 hive parquet 表中 时间戳调整为

sqoop1 导入 hive parquet 表中 时间戳调整为

作者: cooooper | 来源:发表于2019-02-28 16:18 被阅读0次

    问题

    sqoop1从oracle数据库中向hive拉取parquet表后,原本oracle中 "yyyy-mm-dd hh24:mi:ss.ff" 格式的时间,在hive parquet表中成了13位的“时间戳”,其中后三位是常规10位秒级时间戳后的毫秒


    示例

    oracle的字段:


    sqoop导入hive:

    sqoop import \
    --connect <connect> \
    --username <username> \
    --password <username> \
    --query "SELECT * FROM XXX WHERE \$CONDITIONS" \
    --hive-import \
    --hive-table test \
    --split-by ID \
    --target-dir /user/hive/warehouse/ \
    --as-parquetfile
    

    查看时间字段:

    [slave01:21000] default> select COMPLETE_TIME from test limit 1;
    Query: select COMPLETE_TIME from test limit 1
    Query submitted at: 2019-02-28 15:58:53 (Coordinator: https://slave01:25000)
    Query progress can be monitored at: https://slave01:25000/query_plan?query_id=f84d7876d3434df6:2da14b0000000000
    +---------------+
    | complete_time |
    +---------------+
    | 1525252558701 |
    +---------------+
    Fetched 1 row(s) in 4.08s
    

    解决方法

    添加参数 --map-column-java--map-column-hive 来改变数据表列的默认映射类型
    再次导入hive

    sqoop import \
    --connect <connect> \
    --username <username> \
    --password <username> \
    --query "SELECT * FROM XXX WHERE \$CONDITIONS" \
    --hive-import \
    --hive-table test2 \
    --map-column-java COMPLETE_TIME=String \
    --map-column-hive COMPLETE_TIME=String \
    --split-by ID \
    --target-dir /user/hive/warehouse/ \
    --as-parquetfile
    

    查看时间字段:

    [slave01:21000] default> select COMPLETE_TIME from test2 limit 1;
    Query: select COMPLETE_TIME from test2 limit 1
    Query submitted at: 2019-02-28 16:11:35 (Coordinator: https://slave01:25000)
    Query progress can be monitored at: https://slave01:25000/query_plan?query_id=9d4a92bcfe931f6e:7bd9706900000000
    +-------------------------+
    | complete_time           |
    +-------------------------+
    | 2017-08-25 10:30:00.266 |
    +-------------------------+
    Fetched 1 row(s) in 3.39s
    

    可以看到,时间存为了 "yyyy-mm-dd hh24:mi:ss.ff"格式

    注:虽然这里时间字段是String,但使用impala时可自动识别字符串中的时间,以时间函数的形式进行读取、计算等操作

    相关文章

      网友评论

          本文标题:sqoop1 导入 hive parquet 表中 时间戳调整为

          本文链接:https://www.haomeiwen.com/subject/xpzhuqtx.html