网站放自己服务器备案,wordpress企业模板下载,html5素材网,杭州搜索引擎优化需求量Hive优化#xff08;或者面试问你工作中遇到的问题就可以答hive优化#xff09;
select * 是不走MR程序的可以开启本地模式local#xff08;当文件小于默认128M且文件数少于4个#xff0c;不走MR#xff09;表的优化 (1) 小表 join 大表 将key相对分散#xff0c;并且数…Hive优化或者面试问你工作中遇到的问题就可以答hive优化
select * 是不走MR程序的可以开启本地模式local当文件小于默认128M且文件数少于4个不走MR表的优化 (1) 小表 join 大表 将key相对分散并且数据量小的表放在jon左边这样可以有效减少内存溢出OOM错误发生几率在进一步可以开启MapJoin让小维度的表先进入内存在map端完成reduce注现在用的hive版本本身已经进行了优化所以小表放在前或者后没有明显区别 2大表 Join 大表 1.空key过滤一般数据清洗已经被过滤掉了脏数据需要进行过滤 2.空key转换 有时某个key为空但是并不是异常数据此时可以给空key字段赋一个随机值使数据随机均匀地分布在reduce上要不然空key数据会都被分配到一个reduce里造成数据倾斜MapJoin默认是开启的小表join大表时使用可以有效提高效率 内存足够大可以把阈值调大默认25M以下认为是小表 set hive.mapjoin.smalltable.filesize ?; MapJoin工作机制join机制在map阶段完成把小表全部加载到内存在map端进行join避免reduce处理。Group By (1) 默认情况map阶段同一key数据分发给一个reduce当一个key数据过大时就会发生数据倾斜 (2) 并不是聚合操作都要在reduce完成也可以开启map端进行预聚合combiner默认是开启的 3在发现有数据倾斜的时候可以打开负载均衡默认是false hive.groupby.skewindata true确定存在数据倾斜时打开 开启后会生出两个MRJob第一个job中map的输出结果会随机分布到reduce中每个reduce做部分聚合并输出结果第二个Job再根据预处理的结果按照group by key分布到reduce中最后完成最终聚合。countdistinct 去重统计尽量不用用groupby来代替 先group by 再count避免oom或者数据倾斜 只有一个reducer在进行countdistinct的计算尽量避免使用笛卡尔积join的时候不加on条件或者无效onhive只能使用1个reduce来完成笛卡尔积生产环境中会关闭掉笛卡尔积 [会设置成严格模式]行列过滤 1列处理少用select * 2行处理当使用外关联时如果将副表过滤条件写在where后面那么就会全表关联之后在过滤那么副表就要先子查询在进行join。动态分区调整根据分区字段进行分区需要配置参数最大分区数、每个reduce分区数等参数。根据字段的不同个数来进行设定每个reduce分区数少于不同字段个数会报错。 10.MR优化 1合理设置map数 2合理设置reduce数 3并行执行 设置参数hive.exec.parallel true; hive会将一个查询转换成一个或多个阶段阶段可以是MR、抽样阶段、合并阶段、limit阶段。多个阶段并行度越高job完成越快。 4严格模式严格模式下笛卡尔积不被允许分区表未指定分区不被允许等在生成环境中是开启的默认是false。