HIVE根据stage的不同设定不同的参数

要修改的类

org.apache.hadoop.hive.ql.Driver

private TaskRunner launchTask(Task tsk, 
    String queryId, boolean noName,
    String jobname, int jobs, DriverContext cxt) throws HiveException {
    ......
    conf.set("mapreduce.workflow.node.name", tsk.getId()); // tsk.getId() 返回当前stage (stage-1)
    String userdefine = conf.get("user.define");    //获得用户自定义的参数
    ......
}

可以在conf.set("mapreduce.workflow.node.name", tsk.getId());根据获得的stage的不同设置针对这个stage的特定参数,直接用set user.define="stage1: hello world !"; 值用json写,指定相关stage的特定参数,完美实现每个stage指定不同的参数 perfect!

编译源码的过程

第一步:在github选择自己对应的CDH6.2.0版本下载源码
cloudera-hive

第二步:解压后,cd到源码目录下面,修改pom.xml,只编译自己需要的jar

  
    ql

  

第三步:执行编译命令

mvn clean package -DskipTests -Phadoop-2 -Pdist

第四步:拷贝ql/target目录下的两个文件hive-exec-2.1.1-cdh6.2.0-core.jar 和 hive-exec-2.1.1-cdh6.2.0.jar替换掉集群所有节点上的/opt/cloudera/parcels/CDH/jars/的对应文件(假设你的parcels安装在/opt/cloudera/parcels目录下面)


Image 18.png

第五步:CDH上重启Hive将看到效果

Hello World !!!

参考

hive自定义参数设置

你可能感兴趣的:(HIVE根据stage的不同设定不同的参数)