本文共 936 字,大约阅读时间需要 3 分钟。
动态分区可以即时给表添加分区,不用通过修改sql实现。
允许在插入的时候指定分区,分区字段为插入时字段的位置决定。例如:
FROM page_view_stg pvsINSERT OVERWRITE TABLE page_view PARTITION(dt='2008-06-08', country) SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, null, null, pvs.ip, pvs.cnt
其中country分区为pvs.cnt字段。
配置参数 | 默认值 | 含义 |
---|---|---|
hive.exec.max.dynamic.partitions.pernode | 100 | 每个map或reduce允许创建的最大分区个数 |
hive.exec.max.dynamic.partitions | 1000 | 允许创建的最大动态分区数 |
hive.exec.max.created.files | 100000 | 可创建的最大文件个数 |
hive.exec.dynamic.partition.mode | strict | strict需要有静态分区字段,nonstrict允许所有分区都是动态的 |
hive.exec.dynamic.partition | false | 是否开启动态分区 |
hive.error.on.empty.partition | false | 是否抛异常,如果动态分区结果为空 |
静态分区需要在建表时指定分区字段,例如:
CREATE TABLE page_view(viewTime INT, userid BIGINT, page_url STRING, referrer_url STRING, ip STRING COMMENT 'IP Address of the User') COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) STORED AS SEQUENCEFILE;
建立分区dt和country。
转载地址:http://hfkai.baihongyu.com/