能够不适用mr的时候尽量不适用mr。
hive.feach.task.conversion 的配置有none、minimal、more。
hive的默认配置是more.
设置为more后,下面hql都不执行mr.select*from xxx;select a from xxx;select a from xxx limit3;
insert overwrite table xxx partition(p_time)select s_id,p_time from xxx;//不需要手动指定分区,会自动根据源表进行动态分区
10、分桶
如果单个文件过大,可以采用分桶表
11、数据倾斜
控制map个数
减少map个数
一个,调整block块的大小
二个。合并小文件
set mapred.max.split.size=112345600;
set mapred.min.split.size.per.node=112345600;
set mapred.min.split.size.per.rack=112345600;
set hive.input.format= org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
这个参数表示执行前进行小文件合并,前面三个参数确定合并文件块的大小,大于文件块大小128m的,按照128m来分隔,小于128m,大于100m的,按照100m来分隔,把那些小于100m的(包括小文件和分隔大文件剩下的),进行合并。
大于128M的文件,按照128M来进行切分
100到128按照100进行切分
切分剩下的小文件,进行合并
1、 feach不走mr能够不适用mr的时候尽量不适用mr。hive.feach.task.conversion 的配置有none、minimal、more。hive的默认配置是more.设置为more后,下面hql都不执行mr.select * from xxx;select a from xxx;select a from xxx limit 3;2、 本地模式如果存在很多小文件,每个小文件都要开启mr程序,会极大的浪费资源。所以可以开启本地模式,进行小文件合并。 //开启本地m