动态分区
- 注
- 分区列中文报错
- 一般情况不建议使用中文
- 若公司的 hive 并未修改编码,你若不仔细查看一番,直接使用中文,后果自负
- 执意使用中文分区列时
- 配置 mysql 的编码
- 配置 mysql 中的 hive 库的相关编码
- 一般情况不建议使用中文
- 导入数据时 load data 无效
- 导入数据前需要配置 set hive.exec.dynamic.partition.mode = nonstrice
- 建议先将数据插入一张表里,然后再从这个表导入分区表
- 动态分区导入数据时,分区列的字段要放置在最后
- 分区列中文报错
使用(内部分区)
数据表
创建分区表
设置并导入数据
查询数据
分区情况
使用(外部分区)
导入数据
相关参数
参数值一般使用默认,若是修改需要根据业务需求,分区过多最后进行处理时,有时反而是累赘
例:可以按月、周、天都可以根据业务来选择,但设置成分钟,那你自己看着办吧
set hive.exec.max.dynamic.partitions.pernode;
# 每一个执行 MR 节点上,允许创建的动态分区最大数量(100)
set hive.exec.max.dynamic.partitions;
# 所有执行 MR 节点上,允许创建的所有动态分区最大数量(1000)
根据硬件配置决定的,一般内存 1G : 100000个
set hive.exec.max.created.files;
# 所以 MR job 允许创建文件的最大数据(100000)