如何配置oozie pig动作以优先使用user.classpath? 猪版0.10.0-cdh4.2.1
尝试了所有
mapreduce.task.classpath.user.precedence
mapreduce.task.classpath.first
mapreduce.job.user.classpath.first
mapreduce.user.classpath.first
作为猪行动配置设置的一部分。
<action name="my_action">
<pig>
<configuration>
<property>
<name>mapreduce.job.user.classpath.first</name>
<value>true</value>
</property>
但它们似乎都不起作用。 问题是猪(不知何故)依赖于番石榴11而我的工作依赖于番石榴13.我想先在类路径中推动我的工作罐。 编辑:我认为这是oozie取决于guava11
无法让这个工作?任何指针?
添加更多信息: 经过日志后,我看到了
mapred.job.classpath.files // has guava13 first in the classpath
mapred.cachefiles // has guava13 first in the classpath
但是当org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher启动作业时;那么Zookeeper的JobControl日志首先在类路径中有guava 11
[JobControl] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.class.path= // has guava 11 first in the classpath !
答案 0 :(得分:1)
不是mapreduce工作本身,而是oozie启动器,它为你启动mapreduce工作。所以你应该使用以下一个。
<property>
<name>oozie.launcher.mapreduce.job.user.classpath.first</name>
<value>true</value>
</property>
答案 1 :(得分:0)
以下设置可以解决您的问题。
<property>
<name>mapreduce.job.classloader</name>
<value>true</value>
</property>
答案 2 :(得分:0)
for oozie / pig / hive
<property>
<name>oozie.launcher.mapreduce.task.classpath.user.precedence</name>
<value>true</value>
</property>
<property>
<name>mapreduce.task.classpath.user.precedence</name>
<value>true</value>
</property>