zoukankan      html  css  js  c++  java
  • Hive之分区表

    Hive分区表

    1. 说明

    • 分区表的一个分区对应hdfs上的一个目录
    • 分区表包括静态分区表和动态分区表,根据分区会不会自动创建来区分
    • 多级分区表,即创建的时候指定 PARTITIONED BY (event_month string,loc string),根据顺序,级联创建 event_month=XXX/loc=XXX目录,其他和一级的分区表是一样

    2. 静态分区

    生成数据

    [root@master Hive]# cat date.sh
    for i in $(seq 20)
    do
      echo -e  "$(date -d "$RANDOM minute ago"  +%F' '%T'.'%N)"
    done|sort -nk1|awk '{print NR"\t"$0}'>test.txt
    [root@master Hive]# sh date.sh
    [root@master Hive]# cat test.txt
    1    2018-06-13 07:47:50.981100534
    2    2018-06-14 16:17:50.984444067
    3    2018-06-15 00:16:50.977659799
    4    2018-06-16 09:57:50.980036092
    5    2018-06-16 16:28:50.983383590
    6    2018-06-16 18:11:50.995934741
    7    2018-06-16 20:42:50.976483956
    8    2018-06-19 17:42:50.994897479
    9    2018-06-20 13:21:50.993988405
    10    2018-06-20 21:20:50.988528977
    11    2018-06-21 09:24:50.990346343
    12    2018-06-22 00:09:50.985461831
    13    2018-06-26 12:18:50.982232601
    14    2018-06-26 22:21:50.987616378
    15    2018-06-29 23:12:50.993019664
    16    2018-06-30 05:09:50.989413716
    17    2018-07-01 03:18:50.992127089
    18    2018-07-02 21:51:50.991226963
    19    2018-07-03 08:29:50.986623743
    20    2018-07-05 15:45:50.978901099

    创建静态分区表结构

    create table static_part (
    ord_num string,
    ord_date string
    )
    PARTITIONED BY (ord_date_month string)
    row format delimited fields terminated by '\t';

    往分区里面导入数据

    load data local inpath '/root/Hive/test.txt' overwrite into table static_part partition (ord_date_month='2018-06');  //静态分区导入数据需要指定partition的key
    select * from static_part where ord_date_month='2018-06';

    3. 动态分区

    创建动态分区表结构

    create table dynamic_part (
    ord_num string
    )
    PARTITIONED BY (ord_date string)      //把订单日期自动做分区
    row format delimited fields terminated by '\t';

    开启动态分区

    set hive.exec.dynamic.partition=true; //使用动态分区
    set hive.exec.dynamic.partition.mode=nonstrict; //无限制模式

    把刚才静态分区的数据导入到静态分区,用ord_date自动分区

    insert into table dynamic_part partition(ord_date) select ord_num,ord_date from static_part;

    更多用法:https://www.cnblogs.com/ilvutm/p/7152499.html

  • 相关阅读:
    OSGI .Net 框架学习
    ArcEngine开发过程中的空间关系
    ITOCControl添加鼠标右键菜单
    IHookHelper的使用
    ITopologicalOperator接口调用
    GeoProcessor的使用方法
    ArcEngine内置工具条
    OSGI.NET插件方式开发你的应用
    C#在linux上运行实现
    Linux 下随机启动自己的应用 -请使用while(true) 不要Console.ReadKey()
  • 原文地址:https://www.cnblogs.com/blogyuhan/p/9269497.html
Copyright © 2011-2022 走看看