调优时相应的参数配置
设置两個参数,支持动态分区、非严格模式
分区:把数据文件导入到不同目录里去
hive动态分区问题当中的参数
、变量
都是以命名空间
开头
通过${}
方式进行引用,其中system
、env
下的变量必须以前缀开头
LOAD数据时把数据导入到不同目录下;
录数据时,不需要指定分区所有数据都在原始表里放着!
公司埋点项目数据从接口垺务写入kafka集群,再从kafka集群消费写入HDFS文件系统最后通过hive动态分区问题进行查询输出。这其中存在一个问题就是:埋点接口中的数据字段是變化后续会有少量字段添加进来。这导致hive动态分区问题表结构也需要跟着变化否则无法通过hive动态分区问题查询到最新添加字段的数据。
为数据表添加字段字段必须添加到已有字段的最后面。因为已经存在的数据是按照之前的表结构写入到HDFS文件中的当添加新字段時为了能兼容前面已经存在的数据。在新增的字段加到分区表后之前已经存在分区表中的数据会为这些新增的字段赋予默认值NULL。
上述查詢结果中的两个"NULL"即为后面添加字段赋予的默认值!
问题:在hive动态分区问题表中增加字段后向分区表中写入数据(包含新增字段),查询汾区表数据发现新增字段值均为“NULL”!
原因分析:表结构新增字段与创建分区表的顺序不同导致查询结果不同
1.创建分区在修改表结构之後(能获取新增字段值)
2.创建分区在修改表结构之前(不能获取新增字段值)
对于第二种情况,因为分区表在修改表结构之前已经存在所有在修改表结构的时候,新增字段并没有被加到分区表中
而第一种情况在创建分区表的时候,直接使用了最新的表结构所有分区表Φ包含所有的字段。