hive调优
- - 互联网 - ITeye博客一、 控制hive任务中的map数: . 1. 通常情况下,作业会通过input的目录产生一个或者多个map任务. 主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改);.
hive的列间隔需要在创建表的时候指定,通过 ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
来指定,上面是用,来间隔,
而默认情况下 hive使用\001做列的间隔(列间隔就是说在hdfs中字段之间用什么符号间隔)
看如下脚本,其中表
f_trademark_tmp_hdfs_ext_%CHINDAASDATE%
liuchengtmp1_%CHINDAASDATE%
f_markimage_tmp_hdfs_ext_%CHINDAASDATE%
都是用,间隔的, 如下创建表语句 无法增加字段间隔 ,创建好表后 字段间隔为默认 \001
create table ftrademarktmp_%CHINDAASDATE% as select a.markcode , a.appperson , a.addr , a.markname , trim(substr(a.typedetaildes,4000)) typedetaildes, a.begindate , a.enddate , a.CHECKDATE , a.status , a.appdate , a.regdate , a.ZIPCODE , b.xiangmu_new , c.markimage , case when a.begindate is not null and a.enddate >= %current_date% and instr(hivenvl(a.status,'未知'),'无效')=0 then 'R商标' when a.begindate is not null and instr(a.status,'无效')>0 or instr(a.status,'注销')>0 then '过期商标' when a.enddate < %current_date% then '过期商标' when a.begindate is not null and (instr(a.status,'无效')>0 or instr(b.xiangmu_new,'无效')>0) then '无效(被否)商标' when a.begindate is null then 'TM商标' else '未知' end MARKTYPE_NEW from f_trademark_tmp_hdfs_ext_%CHINDAASDATE% a left outer join liuchengtmp1_%CHINDAASDATE% b on a.markcode = b.markcode left outer join f_markimage_tmp_hdfs_ext_%CHINDAASDATE% c on a.markcode = c.markcode order by a.appdate ;
如果好奇 Hive 用间隔后数据的样子,可以找到hive表对应的hdfs文件,然后拖到window下用
notepad++打开,如下
这是以,间隔的hive数据在hdfs的样子:
这是以 \001 默认值方式的结果: